一億以下素數有多少?
心血來潮,寫了個求解一億以下素數的代碼,來測試筆記本的運算速度。
最後花費兩個多小時。
裡面那個進度不是均勻的呀,越到後面,一次循環花費的時間越多。
代碼如下:
import math
import time
f = open("一億以下質數.txt", "w")
time_start = time.time() # 記錄開始時間
num = [];
i = 2
M=100000000
h = 0
for i in range(2, M):
print("進度為:{:.2%}".format(i/ M))
j = 2
for j in range(2, math.ceil(math.sqrt(i))):
if (i % j == 0):
break
else:
num.append(i)
h=h+1
print(h)
if h%10==0:
f.write(str(i)+"\n")
else:
f.write(str(i)+"\t")
time_end = time.time() # 記錄結束時間
time_sum = time_end - time_start # 計算的時間差為程序的執行時間,單位為秒/s
# 打印輸出
print("\n")
print("本次計算小於%d的所有質數"%M)
print("共花費時間:%.2f s"%time_sum)
print("經過計算,一共有%d個質數"%len(num))
# print("分別是:")
# print(num)
f.close()
這是最後的結果:
這是計算出來的所有素數: