Python-在奇数中寻找素数

#-*- coding:utf-8 -*-
'''
Created on xxxx年xx月xx日


@author: nneerr123
'''
from math import sqrt,log
import datetime 


# 判断一个数是否为素数
def isPrime(x):
    
    if x%2==0 and x>2:
        return False
    elif x<=0:
        return False
    elif x==1:
        return False
    elif x==2:
        return True
    else:
        rNum = (int)(sqrt(x)/2)                
        if rNum == 1:
            
            if x%3==0:
                res = False
            else:
                res = True
        else:
            res = True
            for n in range(3,2*rNum+2,2):                
                if x%n==0:                   
                    res =  False
                    break
        return res    
                        
        
#find primes in interval [start end]            
def findPrime(start,end): 
    startTime = datetime.datetime.now()
    if end<start:
        print "The end number must be greater than start number."
        return 
    s=0.0   
    for x in range(start,end+1,1):
        if isPrime(x):
            print x,"is a prime number"
            s=s+1
    endTime = datetime.datetime.now()       
    print "----------------------------------"
    print "The number of primes are",s,"in the given interval."  
    print "============================"
    print "The percentage of primes is",(s/(end-start+1))*100,"% in the given interval."
    print "============================"
    print "Running time is",(float)((endTime-startTime).seconds)
    print "The 1/LnN is",1/log(end)
    print "the error between 1/LnN and percentage of primes is", abs(1/log(end)-(s/(end-start+1)))/(s/(end-start+1))
                     
           
    


#test
if __name__=='__main__':
    
    findPrime(1,100)
#result


# 2 is a prime number
# 3 is a prime number
# 5 is a prime number
# 7 is a prime number
# 11 is a prime number
# 13 is a prime number
# 17 is a prime number
# 19 is a prime number
# 23 is a prime number
# 29 is a prime number
# 31 is a prime number
# 37 is a prime number
# 41 is a prime number
# 43 is a prime number
# 47 is a prime number
# 53 is a prime number
# 59 is a prime number
# 61 is a prime number
# 67 is a prime number
# 71 is a prime number
# 73 is a prime number
# 79 is a prime number
# 83 is a prime number
# 89 is a prime number
# 97 is a prime number
# ----------------------------------
# The number of primes are 25.0 in the given interval.
# ============================
# The percentage of primes is 25.0 % in the given interval.
# ============================
# Running time is 0.0
# The 1/LnN is 0.217147240952
# the error between 1/LnN and percentage of primes is 0.131411036193
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值