如何找到1和N之间的所有数字,这些数字不能被2,3和5整除

时间:2016-01-07 09:19:27

标签: python

我想打印1和sk之间的所有整数,这些整数不能被2,3,5整除。

尝试制作一个列表,我觉得它有效,但向我显示10 (sk定义的例子)可以被1到10的所有整数整除。

sk = int(input("Enter number: "))
z = 1
x = range(1, sk + 1)
while z == sk:
    if (sk % x) == 0:
        if x is x % 2 != 0 or x % 3 != 0 or x % 5 != 0:
            print(sk, "is divisible by", z)
            z = z + 1
        else:
            print(sk, "is not divisible by", z)
            z = z + 1

为什么输出错误?

1 个答案:

答案 0 :(得分:1)

您的代码存在一些问题。

  1. 您的while循环永远不会执行,因为z为1且sk为10,因此它们不相等。
  2. sk % xx是一个范围对象,您不想在其上使用模数。
  3. if x is x % 2 != 0这一点是错的。您可能想要删除x is
  4. 您不需要z,如果您遍历范围对象,您已经拥有从1到10的数字。那么您也可以删除嵌套的if。
  5. 以下是您的代码的简化版本,使用for循环,就像评论中建议的那样。

    sk = int(input("Enter number: "))
    for x in range(1, sk + 1):
        if (sk % x) == 0:
            print(sk, "is divisible by", x)
        else:
            print(sk, "is not divisible by", x)
    

    给出

    Enter number: 10
    (10, 'is divisible by', 1)
    (10, 'is divisible by', 2)
    (10, 'is not divisible by', 3)
    (10, 'is not divisible by', 4)
    (10, 'is divisible by', 5)
    (10, 'is not divisible by', 6)
    (10, 'is not divisible by', 7)
    (10, 'is not divisible by', 8)
    (10, 'is not divisible by', 9)
    (10, 'is divisible by', 10)
    

    您需要做的就是将范围1循环到sk,然后通过sk

    检查if (sk % x) == 0:是否可以被该数字整除

    编辑:实际上该代码不会检查该数字是否可以被2 3或5整除。这是一个代码片段

    sk = int(input("Enter number: "))
    for x in range(1, sk + 1):
        if x % 2 == 0 or x % 3 == 0 or x % 5 == 0:
            print(x, "is divisible by 2 3 or 5")
        else:
            print(x, "is not divisible by 2 3 or 5")
    

    因此,我们现在检查if (sk % x) == 0

    ,而不是检查if x % 2 == 0 or x % 3 == 0 or x % 5 == 0

    现在输出

    Enter number: 10
    (1, 'is not divisible by 2 3 or 5')
    (2, 'is divisible by 2 3 or 5')
    (3, 'is divisible by 2 3 or 5')
    (4, 'is divisible by 2 3 or 5')
    (5, 'is divisible by 2 3 or 5')
    (6, 'is divisible by 2 3 or 5')
    (7, 'is not divisible by 2 3 or 5')
    (8, 'is divisible by 2 3 or 5')
    (9, 'is divisible by 2 3 or 5')
    (10, 'is divisible by 2 3 or 5')