Kode: Velg alt
from pylab import *
#
# Registrer odde primtal mindre enn 5000
#
ptal = zeros(1000)
nummer = 3; ptal[1] = 3; ptal[2] = 5; ptal[3] = 7
for i in range(11,5001,2):
faktor = 3; treff = True
while ( treff == True) and (faktor < sqrt(i)):
if (i/faktor) == floor(i/faktor):
treff = False
else:
faktor = faktor + 2
if treff == True:
nummer = nummer + 1
ptal[nummer] = i
#
# Tel opp antal primtal i Colatz-følgja med startverdi N = start,
# samt oppdaterer høgste antal gjennom variablen maks
#
maks = 0
for start in range(40000, 50000):
a = zeros(1000); nummer = 1 ; a[nummer] = start; antal = 0
tal = start
while ( tal > 1):
nummer = nummer + 1
if(tal/2) == floor(tal/2):
tal = tal/2
else:
tal = 3*tal + 1
a[nummer] = tal
for i in range(1, nummer + 1):
if (a[i]/2)!= floor(a[i]/2):
j = 1; faktor = ptal[j]; treff = True;
while ( faktor < sqrt(a[i])) and (treff == True):
if (a[i]/faktor) == floor(a[i]/faktor):
treff = False
else:
j = j +1
faktor = ptal[j]
if ( treff == True):
antal = antal + 1
if ( antal > maks):
maks = antal
taltreff = start
print( taltreff, " ", maks )