1. 程式人生 > >Python列印某範圍內的素數

Python列印某範圍內的素數

繼續練手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

結果截圖: