【问题标题】:How to check if an integer can be divided by 3如何检查一个整数是否可以被3整除
【发布时间】:2011-07-11 08:01:13
【问题描述】:

如何检查我的整数是否可以除以 3,如下所示:

for(int i=0; i<24;  i++){
   //here, how to check if "i" can be divided by 3 completely(e.g. 3, 6, 15)?

}

【问题讨论】:

  • 您有大约 20 个问题没有被接受的答案。也许您可以提出更明确的问题或跟进答案,以便他们被接受。

标签: java


【解决方案1】:

使用模运算符。

if(i % 3 == 0)

另见Modulo operation at Wikipedia

【讨论】:

    【解决方案2】:

    如果您使用循环,则可以使用每三个数字可以除以 3 的事实。

    for(int i = 0; i < 24;  i += 3) {
       System.out.println(i + " can be divided by 3");
       System.out.println((i+1) + " cannot be divided by 3");
       System.out.println((i+2) + " cannnot be divided by 3");
    }
    

    这避免了对模的需要并将循环数减少了 3 倍。

    【讨论】:

      【解决方案3】:

      使用 MOD 运算符

      for(int i=0; i<24;  i++){
         if( i%3 == 0 )
             // It is divisible by 3
      
      }
      

      【讨论】:

        【解决方案4】:

        嗯,你可以做什么(它可能快一点;它在我的机器上更快)是:

        boolean canBeDevidedBy3 = ((int) (i * 0x55555556L >> 30) & 3) == 0;
        

        而不是

        boolean canBeDevidedBy3 = (i % 3) == 0;
        

        但是,乘法技巧仅适用于-2 &lt;= i &lt;= 1610612735。这个答案的灵感来自this optimization question。但如果我能给你一个提示:使用(i % 3) == 0。它非常简单,并且始终有效。

        【讨论】:

          【解决方案5】:

          检查 i 除以 3 的余数

          if (i % 3 == 0) {}
          

          【讨论】:

            【解决方案6】:

            循环内部:

            if (i%3 == 0)
                // it can be divided by 3
            

            % 被称为“mod”或“modulus”,在将两个数字相除时给出余数。

            这些都是真的:

            6 % 3 == 0
            7 % 3 == 1
            7 % 4 == 3
            

            【讨论】:

              【解决方案7】:
              if( i % 3 == 0 )
              

              % 运算符为您提供除 i / 3 的其余部分

              【讨论】:

                【解决方案8】:
                if( i % 3 == 0 ){
                System.out.println("can be divided by 3");
                }else{
                System.out.println("cant divide by 3");
                }
                

                这个问题是真的吗?

                【讨论】:

                  猜你喜欢
                  • 2015-01-26
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2010-10-25
                  • 1970-01-01
                  • 2015-03-06
                  • 2011-06-26
                  相关资源
                  最近更新 更多