我写了一个能找到素数的程序。你知道吗
from time import sleep
soNotPrimes = []
n = input("Start finding primes at: ")
n = int(n)
k = 2
found_factors = 0
nSQRT = n**0.5
while True:
kinn = n/k
if found_factors == 1:
print("Okay, look man, I totally found a non-prime number. It's", n)
n += 1
k = 2
found_factors = 0
nSQRT = n**0.5
continue
if (k > nSQRT) and found_factors == 0:
print("Oh yeah man, I found a prime!", n)
n += 1
k = 2
found_factors = 0
nSQRT = n**0.5
continue
if kinn.is_integer():
found_factors += 1
k += 1
但是,这不起作用,因为如果数字足够高,Python就会开始将它们解释为,例如525.31e+10。它总是等于5253100000000,这不是素数,因为它是偶数。有没有办法让Python从字面上解释这些数字?你知道吗
我无法重现您的问题,但一般来说,我们希望避免浮点值潜入我们的结果和比较中。代码中有两个地方会发生这种情况:
我们可以用模
%
代替它,得到一个整数余数,而不是浮点数,并且:我们可以用比较
k
的平方和n
的平方来代替它,方法是将方程的两边平方,避免浮点运算。为上述内容重新编写代码并简化一些:看看上面的方法对你有没有好处。您仍然需要对代码进行微调,以正确地处理2或更少的起始数字。你知道吗
相关问题 更多 >
编程相关推荐