模数余数等于零,只有前两个产品在循环中考虑在内

时间:2015-04-01 07:39:46

标签: loops python-3.x modulo

我试图找到给定数字的所有除数(在我的情况下为“i”)(在我的情况下为“a”),没有余数(%i == 0)。我正在运行一个循环,通过从1开始到a的值的所有值。问题是只考虑%i == 0的前两个产品。其余的被遗漏了。这是为什么?

这里是python3中的代码:

a = 999
i = 1
x = 0
d = []

while (i < a):
    x = a / i
    if(x % i == 0):
        d.append(i)
    i += 1

print (d)

代码的输出是:

[1, 3]

而不是列出所有除数。 我检查了a的不同值,但找不到错误。

2 个答案:

答案 0 :(得分:2)

脚本的行为是正确的。亲眼看看:

enter image description here

我认为这是你的逻辑,你想要实现的目标是:

a = 999
i = 1
d = []

while (i < a):
    if(a % i == 0):
        d.append(i)
    i += 1

print (d)

输出:

[1, 3, 9, 27, ...]

答案 1 :(得分:1)

为了补充安东的答案,更多的Pythonic循环方式是:

a, d = 999, []
for i in range(1, a):
    if a%i == 0:
        d.append(i)

您还可以利用对象具有Boolean value

这一事实
if not a%i:

或者你可以使用列表理解:

d = [i for i in range(1, a) if not a%i]