#相信很多人能寫出比我還精簡的算法
#但你能寫出比Python還優雅的算法嗎?!
import math #動用並 import 導入 math 函數
A=[] #A[]裏放質數數列, 每次用 A.append(X)壓棧進去的是挑得的質數(列)……#定義一個數組並且不初始化,因爲不知道這個數組要用多少個元素呢# X爲被除數, j 爲內循環變量, A[j]爲 用來試除的除數
A.append(1) #A[0]=1 爲數組賦初始值,因爲要便於循環
A.append(2) #A[1]=2
X=1 #2==X 時去執行第一次循環
while True: #無限循環
X=X+1
isPrime=1 #默認 (假設)X 是個質數?? 一直到判斷出 X不是質數 那是讓 isPrime=0
x1=int( math.sqrt(X) ) #第二個退出條件是: j 大於了 X的平方根(+1) 即x2
#第一個退出條件是: A[j]大於了 X 的平方根(即x1)
x2=x1+1
for j in range(1, x2 ):
if A[j]>(x1 ):
break
if 0==X%A[j]:
isPrime=0
break
if 1==isPrime: #終於找到一個X 是質數咯,
A.append(X) #壓棧,
print (X) #並輸出吧!
#第二種思路: 還是用篩選,只是把增加 X (X=1+X) 後置
#再問一次你能寫出比Python還優雅的算法嗎?!
import math #動用並 import 導入 math 函數
A=[] #定義一個數組並且不初始化,因爲不知道這個數組要用多少個元素呢
# X爲被除數, j 爲內循環變量, A[j]爲 用來試除的除數
A.append(1) #A[0]=1 爲數組賦初始值,因爲要便於循環
A.append(2) #A[1]=2
X=2 #2==X 時去執行第一次循環
while True: #無限循環
isPrime=1 #默認 (假設)X 是個質數?? 一直到判斷出 X不是質數 那是讓 isPrime=0
x1=int( math.sqrt(1+X) ) #第二個退出條件是: j 大於了 X的平方根(+1) 即x2
#第一個退出條件是: A[j]大於了 X 的平方根(即x1)
x2=1+x1 #x1+1
for j in range(1, x2 ):
if A[j]>(x1 ):
break
if 0==X%A[j]:
isPrime=0
break
if 1==isPrime: #終於找到一個X 是質數咯,
A.append(X) #壓棧,
print (X) #並輸出吧!
X=X+1 #找下一個質數去
#第三種方法
#固定數組的長度
import math
A=[i for i in range(100)] #利用固定長度的數組
x=1
A[1]=1
x+=1
i=1 #數組的下標
#for x in range(2,100):
while i<100:
x1=int(math.sqrt(x))
isPrime=1
for j in range(2,1+x1):
if A[j]>x1:
break
elif 0==x % A[j]:
isPrime=0
break
if 1==isPrime:
A.append(x)
print (x)
i+=1
x+=1