我试图解决欧拉项目的问题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)
for i in range(1, m):
需要是for i in range(2, m + 1):
,因为您不想测试1
并且m + 1
应该包括在内例如,当
n == 9
,m
将是3
,这就是您所追求的-range(2, m)
将排除m
相关问题 更多 >
编程相关推荐