diff --git a/.gitignore b/.gitignore index b8f7112..12f6cca 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ __pycache__ -var61.txt \ No newline at end of file +var61.txt +dixon.py \ No newline at end of file diff --git a/pollard_rho_minus_1.py b/pollard_rho_minus_1.py index d8d5410..9eb2948 100644 --- a/pollard_rho_minus_1.py +++ b/pollard_rho_minus_1.py @@ -1,18 +1,7 @@ # (p-1)-алгоритм Полларда, реализация _rho_minus_1_pollard из интернета import time from math import gcd -from utils import is_prime - -def primes(B): - primes_list = [] - is_prime = [True] * (B + 1) - is_prime[0] = is_prime[1] = False - for p in range(2, B + 1): - if is_prime[p]: - primes_list.append(p) - for i in range(p * p, B + 1, p): - is_prime[i] = False - return primes_list +from utils import is_prime, primes def _rho_minus_1_pollard(n, B_start=100, diff --git a/pollard_rho_minus_1_slow.py b/pollard_rho_minus_1_slow.py index ece5ab8..97f8e3c 100644 --- a/pollard_rho_minus_1_slow.py +++ b/pollard_rho_minus_1_slow.py @@ -1,7 +1,7 @@ # (p-1)-алгоритм Полларда, реализация _rho_minus_1_pollard по алгосу из презентации препода import time from math import gcd, log as ln -from utils import is_prime +from utils import is_prime, primes import random log = [] @@ -10,17 +10,6 @@ def logger(i, p, l, b): if len(log) > 10: log = log[:5] + log[-5:] log.append(f'iter = {i}, p_i = {p}, l_i = {l}, B = {b}') -def primes(B): - primes_list = [] - is_prime = [True] * (B + 1) - is_prime[0] = is_prime[1] = False - for p in range(2, B + 1): - if is_prime[p]: - primes_list.append(p) - for i in range(p * p, B + 1, p): - is_prime[i] = False - return primes_list - def _rho_minus_1_pollard(n, B_start=100, B_step=10, diff --git a/utils.py b/utils.py index 93e2b64..5da7061 100644 --- a/utils.py +++ b/utils.py @@ -16,4 +16,15 @@ def is_prime(N): x = pow(x, 2, N) if x == N - 1: break else: return False - return True \ No newline at end of file + return True + +def primes(B): + primes_list = [] + is_prime = [True] * (B + 1) + is_prime[0] = is_prime[1] = False + for p in range(2, B + 1): + if is_prime[p]: + primes_list.append(p) + for i in range(p * p, B + 1, p): + is_prime[i] = False + return primes_list \ No newline at end of file