我写了一个现在不重要的程序,但这是在费马定理中。现在问题是输出不如预期。我知道这个问题不是太好或者没有标记,但是我无法解决这个错误,即输出中出现了4个必须不存在的错误。我无法调试它。
定理:
for x in range(1,100):
m=5**(x-1)
if m%x>1:
pass
else:
print"prime",x
输出是这样的:
答案 0 :(得分:1)
这里有一个完美的解释:https://stackoverflow.com/a/29596459/5110035
基本上这种方法不是很准确。
我在你的代码中找到了一个模式。如果选择a
5,则会打印a-1
非素数。这就是4出现的原因。将它更改为7,然后你得到6.但也会出现其他错误,例如25。
Fermat的小定理可以很容易地用Python编写:
def CheckIfProbablyPrime(x):
return pow(2, x-1, x) == 1
我认为四个出现的唯一原因是因为你的算法有点不正确。 Eratosthenes的筛子,一旦它找到非素数,它就会摆脱它的倍数,例如4是2的倍数,但2是素数,因为4不是。它检查的数字越少,速度越快。看看那个。