如何检查一个数字是否可以被另一个数字整除(Python)?

Tai*_*mur 91 python integer modulus

我需要测试从1到1000的每个数字是3的倍数还是5的倍数.我认为我这样做的方法是将数字除以3,如果结果是整数那么它就会是3的倍数.与5相同.

如何测试数字是否为整数?

这是我目前的代码:

n = 0
s = 0

while (n < 1001):
    x = n/3
    if isinstance(x, (int, long)):
        print 'Multiple of 3!'
        s = s + n
    if False:
        y = n/5
        if isinstance(y, (int, long)):
            s = s + n

    print 'Number: '
    print n
    print 'Sum:'
    print s
    n = n + 1
Run Code Online (Sandbox Code Playgroud)

Dav*_*nan 194

你使用模数运算符, %

n % k == 0
Run Code Online (Sandbox Code Playgroud)

当且仅当if n是的精确倍数时,求值为true k.在小学数学中,这被称为分裂的余数.

在您当前的方法中,您执行除法,结果将是

  • 如果使用整数除法,则始终为整数,或
  • 如果使用浮点除法,它总是一个浮点数.

这是测试可分性的错误方法.

  • `not(n%k)`将是一个不太可读的选择 (3认同)
  • @Fusion`0 == 0*5` (2认同)

Pan*_*ash 11

您可以简单地使用%Modulus 运算符来检查可分性。
例如:n % 2 == 0表示 n 可以被 2 整除,n % 2 != 0表示 n 不能被 2 整除。