68 lines
1.1 KiB
Python
68 lines
1.1 KiB
Python
import datetime
|
|
import math
|
|
|
|
primes = [ 3, 5 ]
|
|
|
|
cutOff = 200
|
|
|
|
bigUn = 100_000
|
|
chunks = 50
|
|
little = bigUn / chunks
|
|
|
|
tn = " cuban prime"
|
|
print ("The first {:,}{}s:".format(cutOff, tn))
|
|
|
|
c = 0
|
|
showEach = True
|
|
u = 0
|
|
v = 1
|
|
st = datetime.datetime.now()
|
|
|
|
for i in range(1, int(math.pow(2,20))):
|
|
found = False
|
|
u += 6
|
|
v += u
|
|
mx = int(math.sqrt(v))
|
|
|
|
for item in primes:
|
|
if (item > mx):
|
|
break
|
|
if (v % item == 0):
|
|
found = True
|
|
break
|
|
|
|
if (found == 0):
|
|
c += 1
|
|
if (showEach):
|
|
z = primes[-1]
|
|
while (z <= v - 2):
|
|
z += 2
|
|
|
|
fnd = False
|
|
for item in primes:
|
|
if (item > mx):
|
|
break
|
|
if (z % item == 0):
|
|
fnd = True
|
|
break
|
|
|
|
if (not fnd):
|
|
primes.append(z)
|
|
|
|
primes.append(v)
|
|
print("{:>11,}".format(v), end='')
|
|
|
|
if (c % 10 == 0):
|
|
print("");
|
|
if (c == cutOff):
|
|
showEach = False
|
|
print ("Progress to the {:,}th {}:".format(bigUn, tn), end='')
|
|
if (c % little == 0):
|
|
print('.', end='')
|
|
if (c == bigUn):
|
|
break
|
|
|
|
print("");
|
|
print ("The {:,}th{} is {:,}".format(c, tn, v))
|
|
print("Computation time was {} seconds".format((datetime.datetime.now() - st).seconds))
|