如何检查我的整数是否可以除以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)
如果您使用循环,则可以使用每三个数字可以除以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倍.
使用MOD运算符
for(int i=0; i<24; i++){
if( i%3 == 0 )
// It is divisible by 3
}
Run Code Online (Sandbox Code Playgroud)
那么,你能做什么(它可能会更快一点;它在我的机器上更快)是:
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.它简单得多,而且永远都有效.
| 归档时间: |
|
| 查看次数: |
71347 次 |
| 最近记录: |