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

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

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

使用模运算符。

 if(i % 3 == 0) 

另请参阅Wikipedia上的Modulo操作

如果您使用循环,则可以使用每三个数字可以除以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倍。

使用MOD运算符

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

检查我的剩余部分3

 if (i % 3 == 0) {} 

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

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

代替

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

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

在循环内:

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

%被称为“mod”或“模数”,并在分割两个数字时给出余数。

这些都是真的:

 6 % 3 == 0 7 % 3 == 1 7 % 4 == 3 
 if( i % 3 == 0 ) 

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

 if( i % 3 == 0 ){ System.out.println("can be divided by 3"); }else{ System.out.println("cant divide by 3"); } 

这个问题是真的吗?