如何检查一个数字是否能被另一个数字整除?
我需要测试从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
当且仅当 n
是 k
的一个整倍数时,这个表达式的结果为真。在初等数学中,这被称为除法的余数。
在你现在的方法中,你进行了一次除法运算,结果会是:
- 如果你使用整数除法,结果总是一个整数,或者
- 如果你使用浮点数除法,结果总是一个小数。
这样做并不是检查一个数是否能被另一个数整除的正确方法。