主要是依據質數符合6k+-1的規律,而取除數范圍是2至根號n
import math
def find_primery(number):
#判斷1,2,3
if number in [2,3]:
return 1
elif number == 1:
return 0
#能被2或3整除
if number%2 == 0 or number%3 == 0:
return 0#合數
#質數判別6k+-1
elif (number+1)%6 == 0 or (number-1)%6==0:
pass
else:
return 0 #合數
squrt_n = int(math.sqrt(number))#計算上限
if int(squrt_n+1)/6 > 1:#確定步進上限
step_max = int((squrt_n+1)/6)
else :
step_max = 1
for loop in range(1,step_max):#1到step_max為在2至根號number之間的質數的步進范圍
print(loop)
if number%(loop*6+1)==0 or number%(loop*6-1)==0:#除以此范圍內的所有質數
return 0
else:
pass #合數
return 1 #他是質數
if __name__ == '__main__':
while 1:
str1 = input('input number:')
number = int(str1)
print('result:%d'%(find_primery(number)))
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
