[英]I can't figure out what is wrong with this prime checker
I am trying to solve Project Euler problem 3, I am new to coding so I'm sure this could be more optimized.我正在尝试解决 Project Euler 问题 3,我是编码新手,所以我相信这可以更优化。 Essentially, I'm trying to loop through every number between 1 and the sqrt of the number to figure out if it's prime, my debug is consistently saying that it only checks if it's divisible by 1, What am I doing wrong?
本质上,我试图遍历 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):
needs to be for i in range(2, m + 1):
, as you don't want to test for 1
and m + 1
should be included. for i in range(1, m):
需要for i in range(2, m + 1):
,因为您不想测试1
并且应该包括m + 1
。
For example, when n == 9
, m
will be 3
, which is what you're after - range(2, m)
would exclude m
.例如,当
n == 9
, m
将为3
,这就是您所追求的 - range(2, m)
将排除m
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.