python - 试图找到最大的主要因素,但我不知道出了什么问题。请给我建议
问题描述
我不知道出了什么问题。我试图找到最大的主要因素
import math
def getfactor(num):
factors = []
for i in range(2,int((math.sqrt(num)))+1):
if num % i == 0:
factors.append(i)
return factors
def determineprime(num):
factor = []
for i in range(2,num + 1):
if num % i == 0:
factor.append(i)
if len(factor) == 1:
return True
else:
return False
factors = getfactor(600851475143)
primes = []
print(factors)
for i in factors:
determineprime(i)
if i:
primes.append(i)
print(primes[-1])
解决方案
改变:
determineprime(i)
if i:
primes.append(i)
至:
if determineprime(i):
primes.append(i)
原始版本是调用determineprime(i)
,丢弃结果,并始终附加i
到primes
. i
更正后的版本仅在返回 trueprimes
时才会追加。determineprime(i)
更新:正如 Mark Tolonen 指出的,getfactor
如果它的参数是素数,将返回一个空列表。在这种情况下,数字本身应该作为列表的唯一元素返回。它可以在返回之前检查列表是否为空,如果是,则附加数字本身,因为在这种情况下它必须是素数。
推荐阅读
- jmeter - 来自 BeanShellPreprocessor 的 Json 对象未在 HTTP 请求中替换
- c# - 数组问题(无法将类型“int”隐式转换为“int[]”)
- kubernetes - 内部网格通信忽略来自虚拟服务的设置
- batch-file - robocopy 返回无效参数
- python - Python:如何将 SQL 查询作为字符串输入而不会出错?
- javascript - Javascript 过滤器不公平
- python-3.x - Python - Sqlite3 - 使用数据库双点运算符选择查询
- python-3.x - 降低比较连续子阵列的时间复杂度?
- java - 如果`jobject`代表同一个Java实例,它是否总是具有相同的地址?
- reactjs - ReactDOM.render 产生错误元素类型无效