Python 添加素数和斐波那契数

Python 添加素数和斐波那契数,python,numbers,fibonacci,Python,Numbers,Fibonacci,可能重复: 素数: 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, …] 我希望用户给出一个介于(1100000)和程序之间的随机数,以汇总结果(F[n]+p[n]),例如,如果n=3F[3]+p[3]=7+2=9 我编写了以下代码: import math def F(n): return int(((1+math

可能重复:

素数:

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, …] 
我希望用户给出一个介于(1100000)和程序之间的随机数,以汇总结果
(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变成那些巨大的数字几乎是不可能的。我试着做一个定义,不创建列表,而只是计算用户提供的n的素数。有什么想法吗


提前谢谢你

对于素数,有几种方法可以实现。我喜欢天真的方法,检查到sqrt(n),正如马库斯·斯图尔指出的,还有埃拉托内斯的筛选。如果只检查奇数的素数,可以对其进行一点优化。

问题本质上归结为生成素数的算法比计算机更古老。你做过任何研究吗?使用获取素数列表。这是一个非常快速和简单的算法来实现。