#-*- 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
'''
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