Skip to content

Commit 3d3090e

Browse files
authored
update environment (#118)
* update environment * update python version * downgrade numpy * downgrade primesieve * downgrade numpy * downgrade everything * adding python versions * adding python versions * remove python versions * attempt to update numpy version * removing python 3.8 * update primesieve version * remove the use of primesieve package * fix some solutions * fix more solutions * remove the sieve function as implemented in python * add more python versions * remove py 3.9, 3.10 and 3.11
1 parent 6abe0c5 commit 3d3090e

37 files changed

Lines changed: 88 additions & 95 deletions

.github/workflows/python-package.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
runs-on: ubuntu-latest
1616
strategy:
1717
matrix:
18-
python-version: [3.8, 3.9]
18+
python-version: ["3.12", "3.13"]
1919

2020
steps:
2121
- uses: actions/checkout@v2

all_build_tests/test_build.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
for file in listdir(file_path):
1010
# ignore known files that don't follow convention
11-
if file in ['new_problem.py', '__init__.py', '__pycache__']:
11+
if file in ['new_problem.py', '__init__.py', '__pycache__', '.ruff_cache']:
1212
continue
1313

1414
# get project euler problem number from file name

requirements.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
numpy==1.22.1
2-
primesieve==2.3.0
1+
numpy==2.3.2

solutions/PE10.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,8 @@
77
ANSWER: 142913828922
88
Solve time: ~ 0.02 seconds
99
"""
10-
11-
from primesieve import primes
12-
1310
import unittest
14-
from util.utils import timeit
11+
from util.utils import timeit, primes_upto
1512

1613

1714
class Problem10:
@@ -20,7 +17,7 @@ def __init__(self, n):
2017

2118
@timeit
2219
def solve(self):
23-
return sum(primes(self.n))
20+
return sum(primes_upto(self.n))
2421

2522
@timeit
2623
def lucy_algo(self): # see comment below

solutions/PE111.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@
3636

3737
import unittest
3838
import itertools
39-
from util.utils import sieve
40-
from util.utils import timeit
39+
from util.utils import timeit, primes_upto
4140

4241

4342
class Problem111:
@@ -51,7 +50,7 @@ def __init__(self, n, debug):
5150
max_int = int(10 ** (self.n / 2))
5251
if self.debug:
5352
print("Calculating Primes")
54-
self.sqrt_primes = list(sieve(max_int))
53+
self.sqrt_primes = primes_upto(max_int)
5554
if self.debug:
5655
print("Finished Calculating Primes")
5756

solutions/PE123.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,14 @@
77
For example, when n = 3, p_3 = 5, and 4^3 + 6^3 = 280 ≡ 5 mod 25.
88
99
The least value of n for which the remainder first exceeds 10^9 is 7037.
10-
1110
Find the least value of n for which the remainder first exceeds 10^10.
1211
1312
ANSWER: 21035
14-
Solve time ~ ms
13+
Solve time ~850 ms
1514
"""
1615

17-
from util.utils import timeit
16+
from util.utils import timeit, primes_upto
1817
import unittest
19-
from primesieve import primes, nth_prime
2018

2119
# r = (p_{n} − 1)^n + (p_{n} + 1)^n
2220
# r = sum_{i=0}^{n} p_{n}^i (1 + (-1)^(n-i)) * (n choose i)
@@ -34,10 +32,12 @@ def __init__(self, limit):
3432

3533
@timeit
3634
def solve(self):
35+
ls_primes = primes_upto(int(1e6))
3736
for n in range(1, 100000, 2):
38-
r = n * nth_prime(n) * 2
37+
r = n * ls_primes[n-1] * 2
3938
if r >= self.limit:
4039
return n
40+
return 0
4141

4242

4343
class Solution123(unittest.TestCase):

solutions/PE131.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,8 @@
1414
ANSWER: 173
1515
Solve time: ~1 second
1616
"""
17-
from util.utils import timeit
17+
from util.utils import timeit, primes_upto
1818
import unittest
19-
from primesieve import primes
2019

2120
# n^2 * (n+p) = m^3 -> therefore n+p must be a perfect cube and n must be a perfect cube
2221
# therefore p = perfect cube (m^3) - n (perfect cube)
@@ -32,7 +31,7 @@ def __init__(self, max_p=1_000_000):
3231

3332
@timeit
3433
def solve(self):
35-
ls_primes = primes(self.max_p)
34+
ls_primes = primes_upto(self.max_p)
3635
count = 0
3736
p, q = 1, 0
3837
while p <= self.max_p:

solutions/PE132.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"""
1313
from util.utils import timeit
1414
import unittest
15-
from primesieve import primes
15+
from util.utils import primes_upto as primes
1616

1717

1818
# R(n) = (10^n - 1) / 9
@@ -31,7 +31,7 @@ def solve(self, n=pow(10, 9), max_count=40, max_prime=200000):
3131
count = 0
3232
ls_primes = primes(max_prime)
3333
for p in ls_primes:
34-
if pow(10, n, 9 * p) == 1:
34+
if pow(10, n, int(9 * p)) == 1:
3535
count += 1
3636
ans += p
3737
if count == max_count:

solutions/PE187.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,8 @@
1111
Solve time: ~ 0.04 seconds
1212
"""
1313

14-
from primesieve import primes, count_primes
1514
import unittest
16-
from util.utils import timeit
15+
from util.utils import timeit, primes_upto, count_primes_upto
1716

1817

1918
class Problem187:
@@ -23,11 +22,11 @@ def __init__(self, n):
2322
@timeit
2423
def solve(self):
2524
"""pi(n/q) - pi(q) + 1 for all prime q not greater than sqrt(n)"""
26-
ls_p = primes(self.n ** 0.5)
25+
ls_p = primes_upto(self.n ** 0.5)
2726

2827
count = 0
2928
for p in ls_p:
30-
count += count_primes(self.n / p) - count_primes(p) + 1
29+
count += count_primes_upto(self.n / p) - count_primes_upto(p) + 1
3130

3231
return count
3332

solutions/PE193.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
http://www.numericana.com/answer/numbers.htm#moebius
1515
https://arxiv.org/pdf/1107.4890.pdf
1616
"""
17-
from primesieve import primes
17+
from util.utils import primes_upto as primes
1818

1919
import unittest
2020
from util.utils import timeit, mobius_sieve
@@ -67,7 +67,7 @@ def solve_inclusion_exclusion(self): # 23 seconds
6767
self.limit = self.n - 1
6868
self.total = self.n - 1
6969
self.ls_primes = primes((self.n ** 0.5) + 1)
70-
self.ls_sq_primes = [p * p for p in self.ls_primes]
70+
self.ls_sq_primes = [int(p * p) for p in self.ls_primes]
7171
self.num_primes = len(self.ls_primes)
7272
self.inclusion_exclusion_helper(odd_even=-1, prev_prod=1, prime_index=0, next_prod=4)
7373
return self.total

0 commit comments

Comments
 (0)