Skip to content

Commit ee69c09

Browse files
authored
Merge pull request TheAlgorithms#266 from daniel-s-ingram/master
Brute force solution to Problem 10
2 parents 8be9dfc + 81dc221 commit ee69c09

File tree

4 files changed

+103
-0
lines changed

4 files changed

+103
-0
lines changed

Project Euler/Problem 10/sol1.py

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
from __future__ import print_function
2+
from math import sqrt
3+
4+
def is_prime(n):
5+
for i in xrange(2, int(sqrt(n))+1):
6+
if n%i == 0:
7+
return False
8+
9+
return True
10+
11+
def sum_of_primes(n):
12+
if n > 2:
13+
sumOfPrimes = 2
14+
else:
15+
return 0
16+
17+
for i in xrange(3, n, 2):
18+
if is_prime(i):
19+
sumOfPrimes += i
20+
21+
return sumOfPrimes
22+
23+
if __name__ == '__main__':
24+
import sys
25+
26+
if len(sys.argv) == 1:
27+
print(sum_of_primes(2000000))
28+
else:
29+
try:
30+
n = int(sys.argv[1])
31+
print(sum_of_primes(n))
32+
except ValueError:
33+
print('Invalid entry - please enter a number.')

Project Euler/Problem 15/sol1.py

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from __future__ import print_function
2+
from math import factorial, ceil
3+
4+
def lattice_paths(n):
5+
n = 2*n #middle entry of odd rows starting at row 3 is the solution for n = 1, 2, 3,...
6+
k = n/2
7+
8+
return factorial(n)/(factorial(k)*factorial(n-k))
9+
10+
if __name__ == '__main__':
11+
import sys
12+
13+
if len(sys.argv) == 1:
14+
print(lattice_paths(20))
15+
else:
16+
try:
17+
n = int(sys.argv[1])
18+
print(lattice_paths(n))
19+
except ValueError:
20+
print('Invalid entry - please enter a number.')

Project Euler/Problem 25/sol1.py

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
from __future__ import print_function
2+
3+
def fibonacci(n):
4+
if n == 1 or type(n) is not int:
5+
return 0
6+
elif n == 2:
7+
return 1
8+
else:
9+
sequence = [0, 1]
10+
for i in xrange(2, n+1):
11+
sequence.append(sequence[i-1] + sequence[i-2])
12+
13+
return sequence[n]
14+
15+
def fibonacci_digits_index(n):
16+
digits = 0
17+
index = 2
18+
19+
while digits < n:
20+
index += 1
21+
digits = len(str(fibonacci(index)))
22+
23+
return index
24+
25+
if __name__ == '__main__':
26+
print(fibonacci_digits_index(1000))

Project Euler/Problem 28/sol1.py

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from __future__ import print_function
2+
from math import ceil
3+
4+
def diagonal_sum(n):
5+
total = 1
6+
7+
for i in xrange(1, int(ceil(n/2.0))):
8+
odd = 2*i+1
9+
even = 2*i
10+
total = total + 4*odd**2 - 6*even
11+
12+
return total
13+
14+
if __name__ == '__main__':
15+
import sys
16+
17+
if len(sys.argv) == 1:
18+
print(diagonal_sum(1001))
19+
else:
20+
try:
21+
n = int(sys.argv[1])
22+
diagonal_sum(n)
23+
except ValueError:
24+
print('Invalid entry - please enter a number')

0 commit comments

Comments
 (0)