commit
ac0f5a1011
|
@ -0,0 +1 @@
|
||||||
|
__pycache__/
|
|
@ -0,0 +1 @@
|
||||||
|
1
|
|
@ -0,0 +1 @@
|
||||||
|
2
|
|
@ -0,0 +1 @@
|
||||||
|
1
|
|
@ -0,0 +1,6 @@
|
||||||
|
from primenumbers import primenumbers as pn
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
P = pn()
|
||||||
|
P.generate(10000)
|
|
@ -0,0 +1,46 @@
|
||||||
|
from util import read_file, write_file, append_file
|
||||||
|
from sys import maxsize
|
||||||
|
|
||||||
|
class primenumbers:
|
||||||
|
def __init__(self, cache: str = "./cache/primenumbers/") -> None:
|
||||||
|
self.p_last_index : int
|
||||||
|
self.p_current_index : int
|
||||||
|
self.p_current_number: int
|
||||||
|
|
||||||
|
self.p_cache = cache
|
||||||
|
|
||||||
|
self.p_last_index = int(read_file(self.p_cache+"last_index")[0])
|
||||||
|
self.p_current_index = self.p_last_index + 1
|
||||||
|
self.p_current_number = int(read_file(self.p_cache+str(self.p_last_index))[0])
|
||||||
|
if self.p_current_number == maxsize:
|
||||||
|
print("Max int size reached!")
|
||||||
|
exit()
|
||||||
|
self.p_current_number += 1
|
||||||
|
|
||||||
|
print(f"Last index : {self.p_last_index}")
|
||||||
|
print(f"Current index : {self.p_current_index}")
|
||||||
|
print(f"Current number : {self.p_current_number}")
|
||||||
|
|
||||||
|
def generate(self, iterations: int = -1):
|
||||||
|
print(f"Generating {iterations} primenumbers:")
|
||||||
|
iteration: int = 0
|
||||||
|
while(iterations == -1 or iteration < iterations):
|
||||||
|
is_primenumber = True
|
||||||
|
for i in range(1, self.p_current_index):
|
||||||
|
if self.check_modulo(self.p_current_number, int(read_file(self.p_cache+str(i))[0])):
|
||||||
|
is_primenumber = False
|
||||||
|
break
|
||||||
|
if is_primenumber:
|
||||||
|
print(f"\nPrimenumber found: {self.p_current_number}\n")
|
||||||
|
write_file(self.p_cache+str(self.p_current_index), str(self.p_current_number))
|
||||||
|
self.p_last_index = self.p_current_index
|
||||||
|
write_file(self.p_cache+"last_index", str(self.p_last_index))
|
||||||
|
self.p_current_index += 1
|
||||||
|
if self.p_current_number == maxsize:
|
||||||
|
print("Max int size reached!")
|
||||||
|
break
|
||||||
|
self.p_current_number += 1
|
||||||
|
iteration += 1
|
||||||
|
|
||||||
|
def check_modulo(self, a: int, b: int) -> bool:
|
||||||
|
return a % b == 0
|
|
@ -0,0 +1,13 @@
|
||||||
|
def read_file(filepath: str) -> list[str]:
|
||||||
|
file = open(filepath, "r")
|
||||||
|
return file.readlines()
|
||||||
|
|
||||||
|
def write_file(filepath: str, insert_string: str) -> bool:
|
||||||
|
file = open(filepath, "w")
|
||||||
|
file.write(insert_string)
|
||||||
|
file.close()
|
||||||
|
|
||||||
|
def append_file(filepath: str, append_string: str) -> bool:
|
||||||
|
file = open(filepath, "a")
|
||||||
|
file.write(append_string)
|
||||||
|
file.close()
|
Loading…
Reference in New Issue