Code behorend bij Het vinden van priemgetallen
# 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)))