【问题标题】:How do you check whether a number is divisible by another number?你如何检查一个数字是否可以被另一个数字整除?
【发布时间】:2011-11-03 21:37:37
【问题描述】:

我需要测试从 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

【问题讨论】:

  • 在 Python 2.x 中,整数除法总是产生一个整数。
  • 你应该打印“Fizz”和“Buzz”
  • 欧拉计划问题 1 ?

标签: python integer modulo


【解决方案1】:

您可以使用模数运算符 %

n % k == 0

当且仅当nk 的精确倍数时才计算为真。在初等数学中,这称为除法的余数。

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

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

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

【讨论】:

  • 0 % 5 == 0 也是 True,但零不是零的精确倍数。
  • @Fusion 0 == 0*5
  • @Chris_Rands 将其放入答案中,从事代码高尔夫的人(如我)会非常高兴。事实上,我来这里是为了寻找这样的高尔夫答案。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    您可以使用 % 运算符来检查给定数字的整除性

    检查是否给定的代码。否时可被 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
    

    【讨论】:

      【解决方案4】:

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

      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)
      

      或者任何数量的东西。

      【讨论】:

      • 回答您的问题:选择和 ctrl+K 缩进。这次我已经为你做到了。
      【解决方案5】:

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

      6 % 3 = 0 *这意味着如果你将 6 除以 3,你将没有余数,3 是 6 的因数。

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

      如果 n % 3 == 0 *这是说,如果我的数字(n)可以被 3 整除,则余数为 0。

      添加您的 then(print, return) 语句并继续您的

      【讨论】:

        【解决方案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!")
        

        【讨论】:

        • 最好解释一下你给出的修复方法以及它起作用的原因
        • 这不是测试可除性的好方法:进行浮点除法,转换为字符串,然后进行字符串操作以查找小数部分是否(字面意思)“.0”根据浮点实现和进行转换的代码,效率最低,并且可能错误。
        • 例如在 python 解释器中尝试x=10000000000000000; b = str(x/(x-1)); b
        【解决方案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
        

        【讨论】:

        • 计算叉和并使用模运算真的比直接使用模运算快吗?如果是这样,你不应该递归调用你的函数直到数字足够“小”吗?
        【解决方案8】:

        试试这个...

        public class Solution {
        
          public static void main(String[] args) {
            long t = 1000;
            long sum = 0;
        
            for(int i = 1; i<t; i++){
                    if(i%3 == 0 || i%5 == 0){
                        sum = sum + i;
                    }
                }
                System.out.println(sum);    
          }
        }
        

        【讨论】:

        • 我怀疑 Java 是 Python,所以这不是一个有效的答案
        • 您的回答与问题无关
        【解决方案9】:

        最简单的方法是测试一个数字是否为整数是int(x) == x。否则,大卫赫弗南所说的。

        【讨论】:

        • 嗯,可能对于检查数字是否为 int 的问题是一个不错的答案,但这里的问题是如何检查数字是否为 能被另一个数整除...
        猜你喜欢
        • 1970-01-01
        • 2015-01-26
        • 1970-01-01
        • 2011-06-26
        • 1970-01-01
        • 1970-01-01
        • 2020-10-23
        • 1970-01-01
        • 2011-01-06
        相关资源
        最近更新 更多