parent
5da06d3330
commit
6446c86686
@ -0,0 +1,11 @@ |
||||
|
||||
|
||||
threes = [] |
||||
fives = [] |
||||
|
||||
for i in range(1000): |
||||
if i % 3 == 0: |
||||
threes.append(i) |
||||
elif i % 5 == 0: |
||||
fives.append(i) |
||||
print(sum(threes) + sum(fives)) |
@ -0,0 +1,34 @@ |
||||
package main |
||||
|
||||
import "fmt" |
||||
|
||||
func main() { |
||||
primes := []int{2, 3} |
||||
|
||||
for i := 3; i < 2_050_000; i++ { |
||||
primeFlag := false |
||||
for _, j := range primes { |
||||
if i%j == 0 { |
||||
primeFlag = true |
||||
break |
||||
} |
||||
} |
||||
if !primeFlag { |
||||
primes = append(primes, i) |
||||
} |
||||
} |
||||
fmt.Println(primes[len(primes)-1]) |
||||
|
||||
ok_primes := []int{} |
||||
// find all the primes that are below 2 mil
|
||||
for i := 0; primes[i] < 2_000_000; i++ { |
||||
ok_primes = append(ok_primes, primes[i]) |
||||
} |
||||
fmt.Println(ok_primes[len(ok_primes)-1]) |
||||
// find the sum
|
||||
total := 0 |
||||
for _, v := range ok_primes { |
||||
total += v |
||||
} |
||||
fmt.Println(total) |
||||
} |
@ -0,0 +1,12 @@ |
||||
primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97] |
||||
|
||||
for i in range(100, 105_000): |
||||
if i % 1000 == 0: |
||||
print(f"status {i} len({len(primes)})", end="\r") |
||||
for j in primes: |
||||
if i % j == 0: |
||||
break |
||||
else: |
||||
primes.append(i) |
||||
|
||||
|
@ -0,0 +1,83 @@ |
||||
matrix = [ |
||||
[8, 2, 22, 97, 38, 15, 0, 40, 0, 75, 4, 5, 7, 78, 52, 12, 50, 77, 91, 8], |
||||
[49, 49, 99, 40, 17, 81, 18, 57, 60, 87, 17, 40, 98, 43, 69, 48, 4, 56, 62, 0], |
||||
[81, 49, 31, 73, 55, 79, 14, 29, 93, 71, 40, 67, 53, 88, 30, 3, 49, 13, 36, 65], |
||||
[52, 70, 95, 23, 4, 60, 11, 42, 69, 24, 68, 56, 1, 32, 56, 71, 37, 2, 36, 91], |
||||
[22, 31, 16, 71, 51, 67, 63, 89, 41, 92, 36, 54, 22, 40, 40, 28, 66, 33, 13, 80], |
||||
[24, 47, 32, 60, 99, 3, 45, 2, 44, 75, 33, 53, 78, 36, 84, 20, 35, 17, 12, 50], |
||||
[32, 98, 81, 28, 64, 23, 67, 10, 26, 38, 40, 67, 59, 54, 70, 66, 18, 38, 64, 70], |
||||
[67, 26, 20, 68, 2, 62, 12, 20, 95, 63, 94, 39, 63, 8, 40, 91, 66, 49, 94, 21], |
||||
[24, 55, 58, 5, 66, 73, 99, 26, 97, 17, 78, 78, 96, 83, 14, 88, 34, 89, 63, 72], |
||||
[21, 36, 23, 9, 75, 0, 76, 44, 20, 45, 35, 14, 0, 61, 33, 97, 34, 31, 33, 95], |
||||
[78, 17, 53, 28, 22, 75, 31, 67, 15, 94, 3, 80, 4, 62, 16, 14, 9, 53, 56, 92], |
||||
[16, 39, 5, 42, 96, 35, 31, 47, 55, 58, 88, 24, 0, 17, 54, 24, 36, 29, 85, 57], |
||||
[86, 56, 0, 48, 35, 71, 89, 7, 5, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58], |
||||
[19, 80, 81, 68, 5, 94, 47, 69, 28, 73, 92, 13, 86, 52, 17, 77, 4, 89, 55, 40], |
||||
[4, 52, 8, 83, 97, 35, 99, 16, 7, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66], |
||||
[88, 36, 68, 87, 57, 62, 20, 72, 3, 46, 33, 67, 46, 55, 12, 32, 63, 93, 53, 69], |
||||
[4, 42, 16, 73, 38, 25, 39, 11, 24, 94, 72, 18, 8, 46, 29, 32, 40, 62, 76, 36], |
||||
[20, 69, 36, 41, 72, 30, 23, 88, 34, 62, 99, 69, 82, 67, 59, 85, 74, 4, 36, 16], |
||||
[20, 73, 35, 29, 78, 31, 90, 1, 74, 31, 49, 71, 48, 86, 81, 16, 23, 57, 5, 54], |
||||
[1, 70, 54, 71, 83, 51, 54, 69, 16, 92, 33, 48, 61, 43, 52, 1, 89, 19, 67, 48] |
||||
] |
||||
|
||||
def down_diagonal(sx, sy, ln): |
||||
results = [] |
||||
for i in range(ln): |
||||
results.append(matrix[sx+i][sy+i]) |
||||
return results |
||||
|
||||
def up_diagonal(sx, sy, ln): |
||||
results = [] |
||||
for i in range(ln): |
||||
results.append(matrix[sx-i][sy+i]) |
||||
return results |
||||
|
||||
def down_col(sx, sy, ln): |
||||
results = [] |
||||
for i in range(ln): |
||||
results.append(matrix[sx-i][sy]) |
||||
return results |
||||
|
||||
def left_row(sx, sy, ln): |
||||
results = [] |
||||
for i in range(ln): |
||||
results.append(matrix[sx][sy+i]) |
||||
return results |
||||
|
||||
def product(l): |
||||
result = 1 |
||||
for i in l: |
||||
result *= i |
||||
return result |
||||
|
||||
dd_max = 0 |
||||
for i in range(17): |
||||
for j in range(17): |
||||
prod = product(down_diagonal(i,j,4)) |
||||
if prod > dd_max: |
||||
dd_max = prod |
||||
|
||||
ud_max = 0 |
||||
for i in range(3, 20): |
||||
for j in range(0, 17): |
||||
prod = product(up_diagonal(i, j, 4)) |
||||
if prod > ud_max: |
||||
ud_max = prod |
||||
|
||||
col_max = 0 |
||||
for i in range(0, 17): |
||||
for j in range(20): |
||||
prod = product(down_col(i, j, 4)) |
||||
if prod > col_max: |
||||
col_max = prod |
||||
|
||||
row_max = 0 |
||||
for i in range(20): |
||||
for j in range(0, 17): |
||||
prod = product(left_row(i, j, 4)) |
||||
if prod > row_max: |
||||
row_max = prod |
||||
|
||||
print(max([dd_max, ud_max, col_max, row_max])) |
||||
|
@ -0,0 +1,20 @@ |
||||
|
||||
|
||||
fibs = [1] |
||||
|
||||
a = 1 |
||||
b = 1 |
||||
|
||||
while a <= 4_000_000 or b <= 4_000_000: |
||||
num = a + b |
||||
fibs.append(num) |
||||
a = b |
||||
b = num |
||||
print(fibs) |
||||
|
||||
even_fibs = [] |
||||
for i in fibs: |
||||
if i % 2 == 0: |
||||
even_fibs.append(i) |
||||
|
||||
print(sum(even_fibs)) |
@ -0,0 +1,24 @@ |
||||
num = 600_851_475_143 |
||||
#num = 13195 |
||||
primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97] |
||||
|
||||
|
||||
for i in range(100, 40000): |
||||
for j in primes: |
||||
if i % j == 0: |
||||
break |
||||
else: |
||||
primes.append(i) |
||||
|
||||
print("Got Primes") |
||||
|
||||
|
||||
working_primes = [] |
||||
for i in primes: |
||||
dividend = num / i |
||||
#if float(dividend).is_integer(): |
||||
# working_primes.append(i) |
||||
if str(float(dividend)).split(".")[1] == "0": |
||||
working_primes.append(i) |
||||
|
||||
print(working_primes) |
@ -0,0 +1,27 @@ |
||||
three_digit_nums = [i for i in range(100, 999)] |
||||
|
||||
|
||||
def is_palindrome(n): |
||||
norm = str(n) |
||||
even = len(norm) % 2 == 0 |
||||
if even: |
||||
half = norm[:int(len(norm)/2)] |
||||
other_half = [c for c in norm[int(len(norm)/2):]] |
||||
other_half.reverse() |
||||
for i, c in enumerate(half): |
||||
if c != other_half[i]: |
||||
return False |
||||
else: |
||||
return True |
||||
else: |
||||
return False |
||||
|
||||
products = [] |
||||
|
||||
for i in three_digit_nums: |
||||
for j in three_digit_nums: |
||||
product = i*j |
||||
if is_palindrome(product): |
||||
products.append(product) |
||||
|
||||
print(max(products)) |
@ -0,0 +1,22 @@ |
||||
num = 2520 |
||||
|
||||
factors = [i for i in range(1, 20+1)] |
||||
|
||||
|
||||
def perf_num(num): |
||||
for f in factors: |
||||
if num % f == 0: |
||||
pass |
||||
else: |
||||
return False |
||||
else: |
||||
return True |
||||
|
||||
i = 1 |
||||
while True: |
||||
if i % 1000 == 0: |
||||
print("status", i, end='\r') |
||||
if perf_num(i): |
||||
print("found num", i) |
||||
break |
||||
i += 1 |
@ -0,0 +1,6 @@ |
||||
nums = [i for i in range(1, 100+1)] |
||||
|
||||
square_of_sums = sum(nums)**2 |
||||
sum_of_squares = sum([i**2 for i in nums]) |
||||
|
||||
print(square_of_sums-sum_of_squares) |
@ -0,0 +1,13 @@ |
||||
primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97] |
||||
|
||||
for i in range(100, 105_000): |
||||
if i % 1000 == 0: |
||||
print(f"status {i} len({len(primes)})", end="\r") |
||||
for j in primes: |
||||
if i % j == 0: |
||||
break |
||||
else: |
||||
primes.append(i) |
||||
|
||||
print() |
||||
print(primes[10_000]) |
@ -0,0 +1,43 @@ |
||||
big_num = """73167176531330624919225119674426574742355349194934 |
||||
96983520312774506326239578318016984801869478851843 |
||||
85861560789112949495459501737958331952853208805511 |
||||
12540698747158523863050715693290963295227443043557 |
||||
66896648950445244523161731856403098711121722383113 |
||||
62229893423380308135336276614282806444486645238749 |
||||
30358907296290491560440772390713810515859307960866 |
||||
70172427121883998797908792274921901699720888093776 |
||||
65727333001053367881220235421809751254540594752243 |
||||
52584907711670556013604839586446706324415722155397 |
||||
53697817977846174064955149290862569321978468622482 |
||||
83972241375657056057490261407972968652414535100474 |
||||
82166370484403199890008895243450658541227588666881 |
||||
16427171479924442928230863465674813919123162824586 |
||||
17866458359124566529476545682848912883142607690042 |
||||
24219022671055626321111109370544217506941658960408 |
||||
07198403850962455444362981230987879927244284909188 |
||||
84580156166097919133875499200524063689912560717606 |
||||
05886116467109405077541002256983155200055935729725 |
||||
71636269561882670428252483600823257530420752963450 |
||||
""" |
||||
big_num = big_num.replace("\n", "") |
||||
|
||||
|
||||
window = 13 |
||||
|
||||
biggest_product = 1 |
||||
start = 0 |
||||
end = window |
||||
|
||||
while start+window < len(big_num): |
||||
part = big_num[start:end] |
||||
digits = [int(c) for c in part] |
||||
total = 1 |
||||
for i in digits: |
||||
total *= i |
||||
if total > biggest_product: |
||||
biggest_product = total |
||||
start += 1 |
||||
end += 1 |
||||
print(biggest_product) |
||||
|
||||
|
@ -0,0 +1,22 @@ |
||||
package main |
||||
|
||||
import "fmt" |
||||
|
||||
func main() { |
||||
for a := 1; a < 1000; a++ { |
||||
for b := 1; b < 1000; b++ { |
||||
for c := 1; c < 1000; c++ { |
||||
if c%100 == 0 { |
||||
fmt.Printf("iter %v %v %v\r", a, b, c) |
||||
} |
||||
if is_pythag(a, b, c) && a+b+c == 1000 { |
||||
fmt.Printf("\n\n winner {a:%v b:%v c:%v} sum: %v\n", a, b, c, a*b*c) |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
func is_pythag(a int, b int, c int) bool { |
||||
return (a < b && b < c) && (a*a+b*b == c*c) |
||||
} |
@ -0,0 +1,22 @@ |
||||
a = 1 |
||||
b = 1 |
||||
c = 1 |
||||
|
||||
def is_pythag(a, b, c): |
||||
return a < b < c and a**2 + b**2 == c**2 |
||||
|
||||
|
||||
for a in range(1, 1000): |
||||
for b in range(1, 1000): |
||||
for c in range(1, 1000): |
||||
|
||||
if c % 100 == 0: |
||||
print(f"iter {a} {b} {c}", end="\r") |
||||
|
||||
|
||||
|
||||
|
||||
if is_pythag(a, b, c) and a+b+c==1000: |
||||
print(f"a {a} b {b} c {c}") |
||||
else: |
||||
continue |
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue