如何检查一个数字是否可以被另一个数字整除?
- 2025-01-07 08:44:00
- admin 原创
- 129
问题描述:
我需要测试从 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
这个想法是尝试除以数字并查看结果是否为整数。但是,我没有得到预期的结果。
如何测试该数字是否是整数?
在 2.x 中,像这样的除法将产生一个整数,并丢弃余数;有关详细信息,请参阅如何强制将除法转换为浮点数?除法一直向下舍入到 0?。
在 3.x 中,除法将产生一个浮点值;即使结果是一个整数,它也不是“整数” ,因此检查将失败。有关详细信息,请参阅为什么整数除法会产生浮点数而不是另一个整数?isinstance
如果您需要整数除法的余数,而不仅仅是测试可整除性,请参阅查找数字的除法余数。
解决方案 1:
你可以使用模数运算符来实现这一点,%
n % k == 0
当且仅当n
是 的精确倍数时,结果才为真k
。在初等数学中,这被称为除法的余数。
在您当前的方法中,您执行除法,结果将是
如果使用整数除法,则始终为整数,或者
如果使用浮点除法,则始终为浮点数。
这只是测试可分性的错误方法。
解决方案 2:
您可以简单地使用%
模数运算符来检查可整除性。
例如:n % 2 == 0
表示 n 可以被 2 整除,n % 2 != 0
表示 n 不能被 2 整除。
解决方案 3:
您可以使用% 运算符来检查给定数字的整除性
当数字小于 1000 时,检查给定数字是否可以被3 或 5整除的代码如下:
n=0
while n<1000:
if n%3==0 or n%5==0:
print n,'is multiple of 3 or 5'
n=n+1
解决方案 4:
我采用了同样的方法。因为我不明白如何使用模数 (%) 运算符。
6 % 3 == 0
这意味着如果将 6 除以 3,将没有余数,因为 3 是 6 的一个因数。
现在你必须将它与你所面临的问题联系起来。
if n % 3 == 0
这就是说,如果我的数字(
n
)可以被 3 整除,余数为 0。
添加 then (打印、返回)语句并继续
解决方案 5:
这段代码似乎可以完成您所要求的操作。
for value in range(1,1000):
if value % 3 == 0 or value % 5 == 0:
print(value)
或者类似
for value in range(1,1000):
if value % 3 == 0 or value % 5 == 0:
some_list.append(value)
或者任何其他事物。
解决方案 6:
a = 1400
a1 = 5
a2 = 3
b= str(a/a1)
b1 = str(a/a2)
c =b[(len(b)-2):len(b)]
c1 =b[(len(b1)-2):len(b1)]
if c == ".0":
print("yeah for 5!")
if c1 == ".0":
print("yeah for 3!")
解决方案 7:
对于较小的数字来说,n%3 == 0
这样做没问题。对于非常大的数字,我建议先计算交叉和,然后检查交叉和是否是 3 的倍数:
def is_divisible_by_3(number):
if sum(map(int, str(number))) % 3 != 0:
my_bool = False
return my_bool