#37846: python 紀錄


BensonDC (python戰士)

學校 : 不指定學校
編號 : 240921
來源 : [1.175.217.87]
最後登入時間 :
2024-03-27 12:33:26
a007. 判斷質數 | From: [36.238.151.61] | 發表日期 : 2023-10-14 00:33

對於pythons來說使用米勒-拉賓法只要測試2,7兩個數字就會過了

 
#37978: Re: python 紀錄


BensonDC (python戰士)

學校 : 不指定學校
編號 : 240921
來源 : [1.175.217.87]
最後登入時間 :
2024-03-27 12:33:26
a007. 判斷質數 | From: [1.175.194.6] | 發表日期 : 2023-10-21 21:32

witness=[2,7,61]
def isPrime(num):
    if num==1:
        return False
    if num==2:
        return True
    if ~num&1:
        return False
    if num==3:
        return True
    s=0
    d=num-1
    while ~d&1:
        s+=1
        d>>=1
    for i in witness:
        if i>=num:
            continue
        x=pow(i,d,num)
        if x==1 or x==num-1:
            continue
        flag=False
        for j in range(1,s):
            if pow(i,pow(2,j)*d,num)==num-1:
                flag=True
                continue
        if flag:
            continue
        return False
    return True
while True:
    o=int(input())
    if o==0:
        break
    print('質數' if isPrime(o) else '非質數')

 
ZeroJudge Forum