Python列印某範圍內的素數
阿新 • • 發佈:2019-01-08
繼續練手Python基礎部分:用Python實現某範圍的素數列印
分別用while迴圈和for迴圈實現,然後用自定義函式方式,程式碼如下:
# -*- coding: utf-8 -*- """ Created on Sun Oct 23 20:16:41 2016 打印出素數 如果某個數x能夠整除 2~根號x包含2端,那麼這個數就不是素數 ,只能被1和他本身整除 找出2~x之間的素數 @author: """ primeMax = int(raw_input("請輸入素數的範圍:".decode('utf-8'))) #raw_input在Pythonx,y2.7中始終是亂碼,先轉碼,然後將輸入的字串轉int from math import sqrt x = 2 while x<=primeMax: start = 2 end = sqrt(x) while start <= end: if x%start==0:#非素數的滿足條件 break start+=1#因素自增 #此處解釋:如果x能被 2~ 根號x整除 然後跳出迴圈,那麼start一定<=end #否則迴圈完畢start肯定>end,此時就是素數 if start>end: print x x+=1 print("-------------------------") for x in range(2,primeMax+1): flag = True#標記位,預設為素數 for y in range(2,int(sqrt(x))+1): if x%y==0:#非素數的滿足條件 flag = False#非素數 break if flag: print x
結果截圖:
使用自定義函式:
# -*- coding: utf-8 -*- """ Created on Mon Oct 24 21:48:32 2016 @author: """ from math import sqrt def isprime(num): "number is prime ,is true,else false" start = 2 end = int(sqrt(num)) for i in range(start,end+1): if num%i==0: return False return True x = int(raw_input("請輸入素數範圍:".decode("utf-8"))) for i in range(2,x): if isprime(i): print i
結果截圖: