如何检查一个数字是否能被另一个数字整除?

181 投票
7 回答
661293 浏览
提问于 2025-04-17 05:36

我需要测试从1到1000的每个数字,看看它们是否是3的倍数或者5的倍数。

我在Python 2.x中试过这个代码:

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

这个想法是尝试把数字除以3或5,看看结果是不是整数。但是,我得不到预期的结果。

我该怎么测试这个数字是不是整数呢?


在2.x版本中,这样的除法会得到一个整数,余数会被丢掉;想了解更多,可以查看如何强制除法结果为浮点数?除法总是向下取整到0?

在3.x版本中,除法会得到一个浮点数;即使结果是一个整数,这个结果也不是“整数”,所以用isinstance检查会失败。想了解更多,可以查看为什么整数除法会得到浮点数而不是另一个整数?

如果你需要从整数除法中得到余数,而不仅仅是测试是否能整除,可以查看如何找到一个数字的除法余数

7 个回答

2

你可以使用%运算符来检查一个数字是否可以被另一个数字整除。

下面的代码可以用来检查一个数字是否能被3或5整除,前提是这个数字小于1000:

n=0
while n<1000:
    if n%3==0 or n%5==0:
        print n,'is multiple of 3 or 5'
    n=n+1
33

你可以简单地使用 % 这个取余运算符来检查一个数是否能被另一个数整除。
举个例子:n % 2 == 0 表示 n 能被 2 整除,也就是说没有余数;而 n % 2 != 0 则表示 n 不能被 2 整除,也就是有余数。

351

你可以使用取模运算符,也就是 % 来实现这个功能。

n % k == 0

当且仅当 nk 的一个整倍数时,这个表达式的结果为真。在初等数学中,这被称为除法的余数。

在你现在的方法中,你进行了一次除法运算,结果会是:

  • 如果你使用整数除法,结果总是一个整数,或者
  • 如果你使用浮点数除法,结果总是一个小数。

这样做并不是检查一个数是否能被另一个数整除的正确方法。

撰写回答