File tree Expand file tree Collapse file tree 2 files changed +65
-0
lines changed
project_euler/problem_127 Expand file tree Collapse file tree 2 files changed +65
-0
lines changed Original file line number Diff line number Diff line change 1+ from numpy import sqrt
2+
3+ N = 120000
4+
5+
6+ def generate_primes (n : int ):
7+ primes = [True ] * (n + 1 )
8+ primes [0 ] = primes [1 ] = False
9+ for i in range (2 , int (sqrt (n + 1 )) + 1 ):
10+ if primes [i ]:
11+ j = i * i
12+ while j <= n :
13+ primes [j ] = False
14+ j += i
15+ return primes
16+
17+
18+ def rad (n : int , primes_list : list [int ]):
19+ f = 1
20+ for p in primes_list :
21+ if p > n :
22+ break
23+ if n % p == 0 :
24+ f *= p
25+ return f
26+
27+
28+ def gcd (a : int , b : int ):
29+ while b :
30+ a , b = b , a % b
31+ return a
32+
33+
34+ def solution (c_less : int = 120000 ) -> int :
35+ primes_bool = generate_primes (c_less )
36+ primes_list = []
37+ print ("primes generated" )
38+ for i in range (2 , len (primes_bool )):
39+ if primes_bool [i ]:
40+ primes_list += [i ]
41+
42+ rads = [1 ] * (c_less + 1 )
43+ for i in range (c_less + 1 ):
44+ if i % 100 == 0 :
45+ print ("rads" , i )
46+ rads [i ] = rad (i , primes_list )
47+
48+ sum_c = 0
49+ print ("start main" )
50+ for a in range (1 , c_less ):
51+ rad_a = rads [a ]
52+ if a % 2 == 1 :
53+ r = range (1 , min (a , c_less - a ))
54+ else :
55+ r = range (1 , min (a , c_less - a ), 2 )
56+ for b in r :
57+ c = a + b
58+ if rad_a * rads [b ] * rads [c ] < c and gcd (rad_a , rads [b ]) == 1 :
59+ sum_c += c
60+
61+ return sum_c
62+
63+
64+ if __name__ == "__main__" :
65+ print (f"{ solution () = } " )
You can’t perform that action at this time.
0 commit comments