-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprime_numbers.py
More file actions
63 lines (51 loc) · 1.64 KB
/
prime_numbers.py
File metadata and controls
63 lines (51 loc) · 1.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
"""
(c) Evgeny Mironov
_. __.
__ . / ( .. __/ /
< o ))) . . - \(
` ´´ \| ´
"""
# unten folgt ein objected basiertes Primzahlengenerator
# es dauert ca 1-2 min bis die Reihe der Primzahlen kleiner 1 mln erzeugt wird
# hat einer von euch lust daran weiter zu arbeiten um den Verlauf zu optimieren oder
# oder was objektiv ist funktional darzustellen
# oder generatoren, expression, comprehension etc einzubauen?
# willst du mitmachen? -
# einfach clonen, verändern und unter deinem Namen in den gleichen Ordner hochladen
from math import sqrt
def gebrauchte_zeit(f):
def wrapper():
import time
t1 = time.time()
f()
t2 = time.time()
print(t2 - t1)
return wrapper
def isprime(this_num):
last = int(sqrt(PrimeNumbers.primes[-1])) + 1 # Wurzel des letzten Prims
last_i = len(PrimeNumbers.primes) // 2
while PrimeNumbers.primes[last_i] < last:
last_i += 1
print(last_i, '***')
# print(last, last_i, PrimeNumbers.primes[last_i])
for n in PrimeNumbers.primes[:last_i]:
if this_num % n == 0:
return False
return True
class PrimeNumbers:
primes = [2, 3]
def __init__(self, num):
self.candidate = (i + 2 for i in range(3, num, 2))
# @gebrauchte_zeit # - klappt irgendwie nicht
def fill(self):
for n in self.candidate:
if isprime(n):
PrimeNumbers.primes.append(n)
return self.primes
primnumbers = PrimeNumbers(100_000).fill()
prim2 = PrimeNumbers(100).fill()
print(len(primnumbers))
print(primnumbers)
print(prim2)
# 1 3 7 9
# 1 3 5 7 9