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)))