Skip to content

Commit fa93ef1

Browse files
authored
Uploaded solutions that I had on my local drive
1 parent 248bd49 commit fa93ef1

File tree

14 files changed

+356
-0
lines changed

14 files changed

+356
-0
lines changed

1.py

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
LIMIT = 1000
2+
MULTIPLE_1 = 3
3+
MULTIPLE_2 = 5
4+
5+
sum = 0
6+
for i in range(LIMIT):
7+
if (i % MULTIPLE_1 == 0 or i % MULTIPLE_2 == 0):
8+
sum += i
9+
10+
print sum

10.py

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import math
2+
3+
LIMIT = 2000000
4+
5+
def IsPrime(number):
6+
if (number == 2):
7+
return True
8+
9+
for i in range(2, int(math.ceil(math.sqrt(number))) + 1):
10+
if (number % i == 0):
11+
return False
12+
13+
return True
14+
15+
def CalculateSum():
16+
sum = 0
17+
for i in range(2, LIMIT):
18+
if (IsPrime(i)):
19+
sum += i
20+
21+
return sum
22+
23+
print CalculateSum()

2.py

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
LIMIT = 4000000
2+
3+
sum = 0
4+
prev = 1
5+
current = 2
6+
7+
while current < LIMIT:
8+
if (current % 2 == 0):
9+
sum += current
10+
11+
new_current = prev + current
12+
prev = current
13+
current = new_current
14+
15+
print sum

20.py

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import math
2+
3+
FACTORIAL = 100
4+
5+
def GetDigitSum(number):
6+
number_string = str(number)
7+
sum = 0
8+
for ch in number_string:
9+
sum += int(ch)
10+
11+
return sum
12+
13+
def CalcFactorial():
14+
factorial = 1
15+
for i in range(1, FACTORIAL):
16+
factorial *= i
17+
18+
return factorial
19+
20+
21+
print GetDigitSum(CalcFactorial())

3.py

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import math
2+
3+
NUMBER = 600851475143
4+
#NUMBER = 13195
5+
#NUMBER = 10
6+
7+
def FindBiggestDivider(number):
8+
current_number = number
9+
biggest_divider = 0
10+
11+
while True:
12+
i = 2
13+
while (i < int(math.ceil(current_number / 2)) + 1):
14+
if (current_number % i == 0):
15+
biggest_divider = max(biggest_divider, i)
16+
current_number = current_number / i
17+
break
18+
i += 1
19+
20+
if (i == int(math.ceil(current_number / 2)) + 1):
21+
biggest_divider = max(biggest_divider, current_number)
22+
break
23+
24+
return biggest_divider
25+
26+
print "Biggest Divider: " + str(FindBiggestDivider(NUMBER))

30.py

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import math
2+
3+
POWER = 5
4+
5+
SEARCH_MIN = 2
6+
SEARCH_MAX = (9 ** POWER) * 10
7+
8+
def GetDigitPowerSum(number):
9+
number_string = str(number)
10+
sum = 0
11+
for ch in number_string:
12+
sum += int(ch) ** POWER
13+
14+
return sum
15+
16+
def CheckNumber(number):
17+
power_sum = GetDigitPowerSum(number)
18+
19+
if (number > power_sum):
20+
return 1
21+
elif (number < power_sum):
22+
return -1
23+
else:
24+
return 0
25+
26+
def FindSum():
27+
sum = 0
28+
29+
for i in range(SEARCH_MIN, SEARCH_MAX):
30+
if (CheckNumber(i) == 0):
31+
sum += i
32+
33+
return sum
34+
35+
print FindSum()

4.py

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import math
2+
3+
MIN_SEARCH_NUMBER = 900
4+
MAX_NUMBER = 1000
5+
6+
#BASE_NUMBER = 99
7+
#MIN_SEARCH_NUMBER = 10
8+
#MAX_NUMBER = 100
9+
10+
def IsPalindrome(number):
11+
string_number = str(number)
12+
length = len(string_number)
13+
for i in range(length):
14+
if (string_number[i] != string_number[length - i - 1]):
15+
return False
16+
17+
return True
18+
19+
def Run():
20+
max_palindrome = 0
21+
number1 = MIN_SEARCH_NUMBER
22+
while (number1 < MAX_NUMBER):
23+
number2 = number1
24+
while (number2 < MAX_NUMBER):
25+
multiple = number1 * number2
26+
#print multiple
27+
if (IsPalindrome(multiple)):
28+
max_palindrome = max(max_palindrome, multiple)
29+
number2 += 1
30+
31+
number1 += 1
32+
33+
print max_palindrome
34+
35+
36+
37+
Run()

40.py

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import math
2+
3+
INDEXES_TO_MULTIPLY = [1, 10, 100, 1000, 10000, 100000, 1000000]
4+
#INDEXES_TO_MULTIPLY = [1, 10, 100, 1000, 10000, 100000]
5+
#INDEXES_TO_MULTIPLY = [1, 10, 100]
6+
7+
def CreateDigitsString():
8+
global digits_string
9+
10+
string_list = list("0" * INDEXES_TO_MULTIPLY[len(INDEXES_TO_MULTIPLY) - 1])
11+
current_index = 0
12+
i = 1
13+
while (current_index < len(string_list)):
14+
new_string = str(i)
15+
for ch in new_string:
16+
if (current_index >= len(string_list)):
17+
break
18+
19+
string_list[current_index] = ch
20+
current_index += 1
21+
22+
i += 1
23+
24+
digits_string = "".join(string_list)
25+
26+
27+
def Calculate():
28+
global digits_string
29+
CreateDigitsString()
30+
31+
product = 1
32+
for i in INDEXES_TO_MULTIPLY:
33+
product *= int(digits_string[i - 1])
34+
35+
return product
36+
37+
print Calculate()

5.py

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import math
2+
3+
DIVISORS = range(1,20)
4+
5+
def CheckNumber(number):
6+
for divisor in DIVISORS:
7+
if (number % divisor != 0):
8+
return False
9+
10+
return True
11+
12+
# must be even, must end with 0
13+
def FindNumber():
14+
i = 20
15+
while True:
16+
if (CheckNumber(i)):
17+
return i
18+
19+
i += 20
20+
21+
print FindNumber()

50.py

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import math
2+
from copy import copy
3+
4+
LIMIT = 1000000
5+
6+
def IsPrime(number):
7+
if (number == 2):
8+
return True
9+
10+
for i in range(2, int(math.ceil(math.sqrt(number))) + 1):
11+
if (number % i == 0):
12+
return False
13+
14+
return True
15+
16+
def CreatePrimesList():
17+
list = []
18+
for i in range(2, LIMIT):
19+
if (IsPrime(i)):
20+
list.append(i)
21+
22+
return list
23+
24+
def FindLongestSumPrime():
25+
primes_list = CreatePrimesList()
26+
27+
longest_terms_list_length = 0
28+
longest_sum = 0
29+
30+
for i in primes_list:
31+
current_terms_list_length = 1
32+
current_sum = i
33+
34+
for j in primes_list:
35+
if (j <= i):
36+
continue
37+
38+
current_sum += j
39+
current_terms_list_length += 1
40+
41+
if (current_sum >= LIMIT):
42+
break
43+
44+
if (IsPrime(current_sum)):
45+
if (current_terms_list_length > longest_terms_list_length):
46+
longest_terms_list_length = current_terms_list_length
47+
longest_sum = current_sum
48+
49+
print longest_terms_list_length
50+
return longest_sum
51+
52+
print FindLongestSumPrime()

6.py

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import math
2+
3+
LIMIT = 100
4+
5+
def FindSquareDifference():
6+
final_sum = 0
7+
for i in range(1, LIMIT + 1):
8+
for j in range(i+1, LIMIT + 1):
9+
final_sum += 2*i*j
10+
11+
return final_sum
12+
13+
print FindSquareDifference()

7.py

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import math
2+
3+
PRIME_INDEX = 10001
4+
5+
def IsDividable(number, divisors):
6+
for i in divisors:
7+
if (number % i == 0):
8+
return True
9+
10+
return False
11+
12+
def FindPrime(index):
13+
primes_list = [2]
14+
current_number = 3
15+
16+
while (len(primes_list) < index):
17+
if (not IsDividable(current_number, primes_list)):
18+
primes_list.append(current_number)
19+
20+
current_number += 2
21+
22+
return primes_list[len(primes_list) - 1]
23+
24+
print FindPrime(PRIME_INDEX)

8.py

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import math
2+
3+
LONG_NUMBER = "7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450"
4+
CONSECUTIVE_DIGITS = 5
5+
6+
def FindBiggestProduct():
7+
biggest_product = 0
8+
long_number_length = len(LONG_NUMBER)
9+
for i in range(long_number_length - CONSECUTIVE_DIGITS):
10+
product = 1
11+
for j in range(CONSECUTIVE_DIGITS):
12+
product *= int(LONG_NUMBER[i + j])
13+
14+
biggest_product = max(biggest_product, product)
15+
16+
return biggest_product
17+
18+
print FindBiggestProduct()

9.py

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import math
2+
3+
REQUIRED_SUM = 1000
4+
LARGEST_A_VALUE = int(math.ceil(REQUIRED_SUM / 3))
5+
LARGEST_B_VALUE = int(math.ceil(REQUIRED_SUM / 2))
6+
7+
def IsTripletLegal(a, b, c):
8+
if (a + b + c != 1000):
9+
return False
10+
11+
if ((a*a) + (b*b) != (c*c)):
12+
return False
13+
14+
return True
15+
16+
def FindTriplet():
17+
for a in range(1, LARGEST_A_VALUE + 1):
18+
for b in range(a + 1, LARGEST_B_VALUE + 1):
19+
c = 1000 - a - b
20+
if (IsTripletLegal(a, b, c)):
21+
return ([a,b,c])
22+
23+
[a,b,c] = FindTriplet()
24+
print a * b * c

0 commit comments

Comments
 (0)