我不知道这个质数检查器出了什么问题

2024-04-27 02:42:20 发布

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

我试图解决欧拉项目的问题3,我是新的编码,所以我相信这可以得到更多的优化。本质上,我试图循环遍历1和该数字的sqrt之间的每个数字,以确定它是否为素数,我的调试一直在说,它只检查它是否可被1整除,我做错了什么

# Project Euler Problem #3
# Largest prime factor
# What is the largest prime factor of the number 600851475143?
import math
primelist = []
n = 1

while n < 775147:
    n += 1
    m = int(math.sqrt(n))
    if 600851475143 % n == 0:
        if n % 2 != 0:

             for i in range(1,m):
                print (i)
                if n % i == 0:
                    break
                else:
                    primelist.append(n)

1条回答
网友
1楼 · 发布于 2024-04-27 02:42:20

for i in range(1, m):需要是for i in range(2, m + 1):,因为您不想测试1并且m + 1应该包括在内

例如,当n == 9m将是3,这就是您所追求的-range(2, m)将排除m

相关问题 更多 >