问题。3、欧盟项目

2024-09-28 03:15:45 发布

您现在位置:Python中文网/ 问答频道 /正文

Euler项目的问题3是:

13195的主因子为5、7、13和29。 600851475143这个数的最大素因子是什么?你知道吗

我写了一个有效的程序:

n =600851475143
i = 2
while i * i < n: #square root law
    while n % i == 0: #isolates factors
        n = n/i 
i = i + 1
print (n)

然而,当我试图用另一种方式回答时,我想到了以下代码:

def primes(n):
    for i in range(2,int(n**.5)):
        while n % i == 0:
            n = n / i
     print (n)
 primes(600851475143)

我的控制台返回值1.0。所以,我的主要问题是:为什么1.0会被返回:(,第一个代码中的初始while循环和错误代码中的for循环有什么不同?你知道吗

谢谢!你知道吗


Tags: 项目代码程序forroot因子primesprint
1条回答
网友
1楼 · 发布于 2024-09-28 03:15:45

首先:你的工作代码是偶然的。尝试输入像75,它将失败。至于代码中的差异:

while循环i * i < n的条件在每次迭代后进行评估,其中in在循环体中都发生了变化。在这里,当您到达目标素数时,假设5in都是5,循环停止,因为25>;=5

for循环的迭代次数更多,因为范围在开始时只设置了一次,所以循环将始终迭代到范围中指定的上限。这里,在我们概述的例子中:n=n/5将一直执行到n1

相关问题 更多 >

    热门问题