可能重复:
Find out 20th, 30th, nth prime number. (I’m getting 20th but not 30th?) [Python]
Fastest way to list all primes below N in python
素数:
P=[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, …]
斐波那契数字:
F=[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …]
我希望用户在(1,100000)和程序之间提供一个随机数,以汇总结果(F[n]+P[n])
,例如n=3
F[3]+P[3]=7+2=9
我写了以下代码:
import math
def F(n):
return int(((1+math.sqrt(5))**n-(1-math.sqrt(5))**n)/(2**n*math.sqrt(5)))
L=[]
L.append(2)
L=[]
for n in range(2, 10000):
for x in range(2, n):
if n % x == 0:
break
else:
# loop fell through without finding a factor
L.append(n)
while True:
x = raw_input().strip()
if x == "END" or x == "end":
break
else:
num = int(x)
print F(num)+L[num]
我很容易从def F(n)中找到Fib数字,但是创建素数列表实际上是一个令人头痛的原因,因为数字增加需要一些时间来创建列表,并且几乎可以不可能将n到达那些巨大的数字..我试图做一个def而不是创建列表但只是为了用户提供的n计算素数。任何想法??
提前谢谢你!
答案 0 :(得分:1)
对于Prime Numbers,您可以实现多个primality tests。我喜欢天真的方法,检查到sqrt(n),还有Marcus Stuhr指出的Erathostenes筛子。如果仅检查奇数的素数,则可以稍微优化一下。