本帖最后由 homepeople 于 2020-1-16 01:50 编辑
最近想重构一个质数函数,遇到个奇怪的问题,在 is_Prime里面如果我把
if i > Number//3:
return True
换成函数speedUp_Prime速度就会慢很多,根本没做什么修改,请问有没有人遇到类似情况?到底是什么问题?
- def is_Prime(Number):#Number is a Prime or not,return boolean
- if Number==2 or Number ==5:# 2 and 5 are Prime
- return True
- if is_even(Number) or Number%10 ==5 :#Prime Not Even and last Number Not 5
- return False
-
- i=0
- for i in range(3,Number,2):#already remove even,so start at 3 step 2
- if(Number%i == 0):
- return False
- # if speedUp_Prime(i,Number):
- # return True
- if i > Number//3:
- return True
- else:#After calculate all Number
- return True
-
- def speedUp_Prime(i,Number):
- if i > Number//3:
- return True
复制代码- def get_Prime_Fast(MinNum,MaxNum):#get all Prime in Range(MinNum,MaxNum),print out
- n=1
- for i in range(MinNum,MaxNum):
- if is_Prime(i):
- print(n,i)
- n += 1
复制代码- if __name__=='__main__':
- import time
- start = time.time()
- get_Prime_Fast(2,100000)
- end = time.time()
- print (end-start)
复制代码
|