2011-07-11 65 views
19

划分如何检查是否我的整数可以通过3如下划分:如何检查是否一个整数可以通过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)? 

} 
+3

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

回答

5

使用MOD操作

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

} 
4

检查我的剩余devided 3

if (i % 3 == 0) {} 
0
if(i % 3 == 0) 

%操作符提供最新的,分裂的其余I/3

1

内回路:

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

%被称为“mod”或“模数”,并给出了除以两个数字时的余数。

这些都是真实的:

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

这个问题是不是真的?

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"); 
} 

这避免了模的需要被分割并通过的因素削减的回路数3.

4

那么,你可能(它可能有点快;这是更快我的机器上)是:

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

代替

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

然而,乘法招只适用于-2 <= i <= 1610612735。这个答案受this optimization question的启发。但如果我可以给你一个提示:使用(i % 3) == 0。它非常简单,并且始终有效。

相关问题