# Programma 1A: lijst van getallen
n = 50
rij= list(range(2, n+1))
print(rij)
# Programma 1B: (vervolg op 1A)
# toevoegen priemgetal verwijderen uit
# rij
pr = rij.pop(0)
priemrij = []
priemrij.insert(0, pr)
print(priemrij)
print(rij)
# Programma 1C: (vervolg op 1B)
# verwijderen van veelvouden priemgetal
# uit rij
for j in rij:
if (j % pr == 0):
rij.remove(j)
print(rij)
# Programma 1D: (vervolg op 1C)
# herhalen van stap met priem 3
pr = rij.pop(0)
priemrij.insert(len(priemrij), pr)
for j in rij:
if (j % pr == 0):
rij.remove(j)
print(priemrij)
print(rij)
# Programma 1E: (vervolg op 1D)
# herhalen van stap met priem 5 en 7
pr = rij.pop(0)
priemrij.insert(len(priemrij), pr)
for j in rij:
if (j % pr == 0):
rij.remove(j)
pr = rij.pop(0)
priemrij.insert(len(priemrij), pr)
for j in rij:
if (j % pr == 0):
rij.remove(j)
print(priemrij)
print(rij)
# Programma 2: zeef van Erathostenes
n = 50
rij= list(range(2, n+1))
priemrij = []
pr = 1
while pr <= n**(1/2):
pr = rij.pop(0)
priemrij.insert(len(priemrij), pr)
for j in rij:
if (j % pr == 0):
rij.remove(j)
print("kleine priemen:", priemrij)
print(" grote priemen:", rij)
print(" priemen:", priemrij + rij)
# Programma 3: zeef van Erathostenes
# (verbeterde versie)
n = 50
rij= list(range(2, n+1))
priemrij = []
pr = 1
while pr <= n**(1/2):
pr = rij.pop(0)
priemrij.insert(len(priemrij), pr)
rij = list(x for x in rij if (x % \
pr != 0))
print(priemrij + rij)
# Programma 4: zeef van Erathostenes
# als functie
def maak_priemrij(n):
# Deze functie genereert alle
# priemgetallen kleiner of gelijk
# aan n
if n < 2:
return []
rij= list(range(2, n+1))
priemrij = []
pr = 1
while pr <= n**(1/2):
pr = rij.pop(0)
priemrij.insert(len(priemrij)\
, pr)
rij = list(x for x in rij if\
(x % pr != 0))
return(priemrij + rij)
print(maak_priemrij(7))
n = 1000000
r = maak_priemrij(n)
print("Er zijn {} priemgetallen klein\
er of gelijk aan {}.".format(len(r), \
n))
print("Het grootste priemgetal, klein\
er dan {} is {}.".format(n, \
r[len(r)-1]))
# Programma 5A: factoriseren: genereer
# priemgetallen (gebaseerd op
# programma 4)
n = 111
priemrij = maak_priemrij(int(n**(1/2)))
print(priemrij)
# Programma 5B: toelichting op de
# functie int
import math
print(int(-math.pi))
print(int(math.pi))
# Programma 5C: kleinste delers zoeken
# (gebaseerd op programma 4)
n = 111
priemrij = maak_priemrij(int(n**(1/2)))
kleinste_deler = n
for pr in priemrij:
if n % pr ==0:
kleinste_deler = pr
break
print(kleinste_deler)
n = n // kleinste_deler
priemrij = maak_priemrij(int(n**(1/2)))
kleinste_deler = n
for p in priemrij:
if n % p ==0:
kleinste_deler = p
break
print(kleinste_deler)
# Programma 6A: functie die kleinste
# deler zoekt (gebaseerd op
# programma 4)
def bepaal_kleinste_deler(n):
kleinste_deler = n
priemrij = maak_priemrij(int\
(n**(1/2))+1)
for j in priemrij:
if n % j == 0:
kleinste_deler = j
break
return(kleinste_deler)
bepaal_kleinste_deler(40349)
# Programma 6B: functie die priemdelers
# van n zoekt (gebaseerd op
# programma 4)
def bepaal_delers(n):
res = []
q = 1
deler = n
while deler > 1:
q = bepaal_kleinste_deler(deler)
res.insert(0, q)
deler = deler// q
return(res)
bepaal_delers(1123235)
# Programma 6C: checken van
# factorisatie (gebaseerd op
# programma 4)
811*277*5
# Programma 7A:
2 * 3 * 7 * 43 + 1
# Programma 7B:
bepaal_delers(1807)
# Programma 7C:
n = 2 * 3 * 7 * 13* 43 * 139 +1
print(bepaal_delers(n))
n = 2 * 3 * 7 * 13* 43 * 139 * \
3263443 +1
print(n)
print(bepaal_delers(n))
# Programma 8: Aantal functies t.b.v.
# priemgetallen
import sympy
a = 1000000
b = a + 100
print(sympy.primorial(10))
print(sympy.prime(1000))
print(sympy.primepi(1000000))
print(sympy.prevprime(a))
print(sympy.nextprime(a))
print(list(sympy.primerange(a, b)))
# Programma 9: Aantal functies t.b.v.
# factoriseren van getallen
import sympy
print(sympy.factorint(10**40-1))
print(sympy.factorint(\
sympy.primorial(10)+1))
print(sympy.divisors(\
sympy.primorial(5)))