如何检查整数是否可以除以3

Lee*_*eem 23 java

如何检查我的整数是否可以除以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)?

}
Run Code Online (Sandbox Code Playgroud)

Seb*_*mba 69

使用模运算符.

if(i % 3 == 0)
Run Code Online (Sandbox Code Playgroud)

另请参阅Wikipedia上的Modulo操作


Pet*_*rey 9

如果您使用循环,则可以使用每三个数字可以除以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");
}
Run Code Online (Sandbox Code Playgroud)

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


Tal*_*han 6

使用MOD运算符

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

}
Run Code Online (Sandbox Code Playgroud)


Tho*_*ler 5

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

boolean canBeDevidedBy3 = ((int) (i * 0x55555556L >> 30) & 3) == 0;
Run Code Online (Sandbox Code Playgroud)

代替

boolean canBeDevidedBy3 = (i % 3) == 0;
Run Code Online (Sandbox Code Playgroud)

但是,乘法技巧只适用于-2 <= i <= 1610612735.这个答案的灵感来自于这个优化问题.但如果我能给你一个提示:使用(i % 3) == 0.它简单得多,而且永远都有效.