我编写的python3素因子函数并没有像我预期的那样工作 def primeF(n): x=2 因素:列表[int]=[] 而(x
当我运行这段代码时总是有一个错误,但我不确定为什么。错误消息如下: 回溯(最近一次呼叫最后一次):我编写的python3素因子函数并没有像我预期的那样工作 def primeF(n): x=2 因素:列表[int]=[] 而(x,python,arrays,python-3.x,function,Python,Arrays,Python 3.x,Function,当我运行这段代码时总是有一个错误,但我不确定为什么。错误消息如下: 回溯(最近一次呼叫最后一次): 文件“C:/Users/User/untitled/EulerQs.py”,第41行,在 在primeF中打印(primeF(6))文件“C:/Users/User/untitled/EulerQs.py”,第38行 因子。附加(x)MemoryError 我不知道这是什么意思。如果有什么不同的话,我会使用PyCharm。如评论中所述,崩溃的原因是外部while循环永远不会结束,因为x的增量在该循
文件“C:/Users/User/untitled/EulerQs.py”,第41行,在 在primeF中打印(primeF(6))文件“C:/Users/User/untitled/EulerQs.py”,第38行 因子。附加(x)MemoryError
我不知道这是什么意思。如果有什么不同的话,我会使用PyCharm。如评论中所述,崩溃的原因是外部while循环永远不会结束,因为
x
的增量在该循环之外。只需将缩进更改为将x=x+1
放在循环中即可
另一件有用的事情是自动写出一系列数字的结果。然后您将看到,每当n
本身是素数时,函数都会给出一个空列表。因此,在外部while循环的停止条件下,还应该考虑x==n
更改此选项后,代码如下所示:
def primeF(n):
x=2
因子=[]
while(x)欢迎使用SO!缩进问题:x=x+1
不在while循环中,因此因子。append(x)
会破坏您的内存。请尝试打印值以捕获类似这样的错误--您会看到因子只会以相同的素数不断增长(可能是2)无限期重复。投票以键入错误的方式结束。是的,正如@ggorlen指出的,你可以看到x
在你的循环中永远不会增加,所以当x时,你可以做的另一件事是while(x
到while(x)谢谢大家的回复!如果没有你,我不会意识到这一点。谢谢你的快速回复和详细解释的解决方案。你帮了大忙
def primeF (n):
x = 2
factors: List[int] = []
while (x < n):
y = 2
flag = 0
while (y < x):
if (x % y == 0):
flag = 1
y = y + 1
if (n % x == 0 and flag == 0):
factors.append(x)
x = x + 1
return factors
primeF(6)
0 has as prime factors: []
1 has as prime factors: []
2 has as prime factors: [2]
3 has as prime factors: [3]
4 has as prime factors: [2]
5 has as prime factors: [5]
6 has as prime factors: [2, 3]
7 has as prime factors: [7]
8 has as prime factors: [2]
9 has as prime factors: [3]
10 has as prime factors: [2, 5]