2011-07-11 29 views
19

Cómo comprobar si mi número entero se puede dividir por 3 a continuación:¿Cómo comprobar si un número entero se puede dividir por 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

Tiene aproximadamente 20 preguntas sin una respuesta aceptada. Quizás puedas hacer preguntas más claras o dar seguimiento a las respuestas para que puedan ser aceptadas. –

Respuesta

5

Utilice el operador MOD

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

} 
4

Comprobar el resto de i dividido por 3

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

El operador% le proporciona el resto de la división i/3

1

interior el ciclo:

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

% se llama "mod" o "módulo" y le da el resto al dividir dos números.

Estos son ciertas:

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

es la pregunta de verdad?

9

Si está utilizando un bucle, puede utilizar el hecho de que cada tercer número se puede dividir por 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"); 
} 

Esto evita la necesidad de un módulo y reduce el número de bucles en un factor de 3.

4

Bueno, lo que podría do (que podría ser un poco más rápido, es más rápido en mi máquina) es:

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

en lugar de

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

Sin embargo, el truco de la multiplicación sólo funciona para -2 <= i <= 1610612735. Esta respuesta fue inspirada por this optimization question. Pero si puedo darle un consejo: use (i % 3) == 0. Es mucho más simple y siempre funcionará.

Cuestiones relacionadas