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

问题描述 投票:0回答:7

我需要测试从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
检查将失败。有关详细信息,请参阅为什么整数除法会产生浮点数而不是另一个整数?

如果您需要整数除法的余数而不仅仅是测试整除性,请参阅查找数字的除法余数

python integer modulo
7个回答
350
投票

您可以使用模运算符来完成此操作,

%

n % k == 0
当且仅当

n

k
 的精确倍数时,
评估为 true。在初等数学中,这称为除法的余数。

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

  • 如果使用整数除法,则始终为整数,或者
  • 如果使用浮点除法,则始终为浮点数。

这是测试整除性的错误方法。


33
投票

您可以简单地使用

%
模运算符来检查整除性。
例如:
n % 2 == 0
表示 n 可以被 2 整除,
n % 2 != 0
表示 n 不能被 2 整除。


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

2
投票

我也有同样的方法。因为我不明白如何使用模块(%)运算符。

6 % 3 == 0
  • 这意味着如果您将 6 除以 3,则不会有余数,3 是 6 的因数。

现在你必须将其与你给定的问题联系起来。

if n % 3 == 0
  • 这就是说,如果我的数字 (
    n
    ) 能被 3 整除,余数为 0。

添加您的 then(打印、返回)语句并继续您的


1
投票

此代码似乎可以满足您的要求。

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)

或任何数量的事情。


-2
投票
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!")

-4
投票

对于少量

n%3 == 0
就可以了。对于非常大的数字,我建议先计算交叉和,然后检查交叉和是否是 3 的倍数:

def is_divisible_by_3(number):
    if sum(map(int, str(number))) % 3 != 0:
        my_bool = False
    return my_bool
© www.soinside.com 2019 - 2024. All rights reserved.