【发布时间】:2014-09-09 01:39:17
【问题描述】:
我从斐波那契生成素数如下(使用Python,mpmath 和sympy 用于任意精度):
from mpmath import *
def GCD(a,b):
while a:
a, b = fmod(b, a), a
return b
def generate(x):
mp.dps = round(x, int(log10(x))*-1)
if x == GCD(x, fibonacci(x-1)):
return True
if x == GCD(x, fibonacci(x+1)):
return True
return False
for x in range(1000, 2000)
if generate(x)
print(x)
这是一个相当小的算法,但似乎生成了所有素数(不知何故,5 除外,但这是另一个问题)。我说似乎是因为很小的百分比(1000 下 0.5% 和 10K 下 0.16%,越来越少)不是主要的。例如在 1000 下:323、377 和 442 也会生成。这些数字不是素数。
我的脚本有什么问题吗?我尝试通过将.dps 设置与正在计算的数字相关联来考虑精度。 真的是斐波那契数和素数看起来如此相关,但是当它变得详细时,它们不是吗? :)
【问题讨论】:
-
这个问题似乎是题外话,因为它是关于数学,而不是软件开发。
-
这是伪素数 :)
-
我认为这意味着您正在重新计算A182554。