save progress

master
Lukas Werner 2 years ago
parent 5da06d3330
commit 6446c86686
  1. 11
      1/main.py
  2. 34
      10/main.go
  3. 12
      10/main.py
  4. 83
      11/main.py
  5. 20
      2/main.py
  6. 24
      3/main.py
  7. 27
      4/main.py
  8. 22
      5/main.py
  9. 6
      6/main.py
  10. 13
      7/main.py
  11. 43
      8/main.py
  12. 22
      9/main.go
  13. 22
      9/main.py
  14. 12798
      project_euler_problems.txt

@ -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…
Cancel
Save