python 質數

python 質數

非常好的教學 : https://www.youtube.com/watch?v=2p3kwF04xcA

方法1 : 

#1
import math
import time
list=[]
#5
def is_prime_v2(n):
    if n==1:
        return False
    max_divisor = math.floor(math.sqrt(n))    
    for j in range(2,max_divisor+1):
        if n%j==0:
            return False
    list.append(n)
    return True
#2
num = int(input("[質數產生器]請輸入一數字,將自動產出該數前的所有質數值:")) 
#3
t0=time.time()
for n in range(1,(num+1)):
#4    
    print(n,is_prime_v2(n))
    t1=time.time()
#6    
print(list)    
#7
print("共花了時間為{0}秒".format(t1-t0))

方法1 結果圖片 : 

方法2 :

#1
import math
import time
list=[]
#5
def is_prime_v2(n):
    if n==1:
        return False
    if n==2:
        list.append(n)
        return True
    if n>2 and n%2==0:
        return False
    
    max_divisor = math.floor(math.sqrt(n))    
    for j in range(3,max_divisor+1,1):
        if n%j==0:
            return False
    list.append(n)
    return True
#2
num = int(input("[質數產生器]請輸入一數字,將自動產出該數前的所有質數值:")) 
#3
t0=time.time()
for n in range(1,(num+1)):
#4    
    print(n,is_prime_v2(n))
    t1=time.time()
#6    
print(list)    
#7
print("共花了時間為{0}秒".format(t1-t0))

方法2 結果圖片 : (比較快)

參考網址 : https://openhome.cc/Gossip/Python/ForComprehension.html