RosettaCodeData/Task/Cuban-primes/Python/cuban-primes.py

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