2011-08-09 81 views
8

¿Cuál es la mejor manera de averiguar si la división de dos números arrojará un resto? Tomemos como ejemplo, tengo una matriz con valores {3,5,7,8,9,17,19}. Ahora necesito encontrar el divisor perfecto de 51 del conjunto de arriba. ¿Hay alguna forma más simple de resolver esto?¿Cómo encontrar el resto de una división en C?

+0

Encontré el rango '{3,5,7,8,9,17,19}' bastante sospechoso. * Parece casi * que estás usando primos aquí, pero 8 no es primo y faltan 11 y 13 ... – DarkDust

Respuesta

15

Usted puede utilizar el operador % para encontrar el resto de una división, y comparar el resultado con 0.

Ejemplo:

if (number % divisor == 0) 
{ 
    //code for perfect divisor 
} 
else 
{ 
    //the number doesn't divide perfectly by divisor 
} 
+2

El módulo y el recordatorio son diferentes para los números negativos: http://stackoverflow.com/questions/13683563/whats-the-difference-between-mod-and-remainder – calandoa

+0

buen punto, pero no veo cómo eso cambia el cheque para la división perfecta –

+0

La respuesta está bien con respecto a la pregunta, pero la C es muy borrosa sobre la relación entre%, módulo y operadores de resto, y su declaración fue un poco imprecisa, así que acabo de agregar un enlace para aclarar este punto. – calandoa

4

Utilice el operador de módulo %, devuelve el resto.

int a = 5; 
int b = 3; 

if (a % b != 0) { 
    printf("The remainder is: %i", a%b); 
} 
+0

@Joey - ¿por qué eliminaste el ejemplo? – MByD

+0

No lo hice; Acabo de corregir un error tipográfico y agregué el signo del operador. Podría ser que las ediciones simultáneas estuvieran chocando aquí. SO es incluso peor que MediaWiki. Es decir. cuando lo estaba editando, solo vi una frase y tampoco recibí una notificación sobre modificaciones concurrentes. Lo siento:/ – Joey

+0

Mis disculpas ... Pensé que tenías algún problema con mi ejemplo ... ¡Y gracias! – MByD

1

Todas las respuestas anteriores son correctas. Simplemente proporcione con su conjunto de datos para encontrar el divisor perfecto:

#include <stdio.h> 

int main() 
{ 

int arr[7] = {3,5,7,8,9,17,19}; 
int j = 51; 
int i = 0; 

for (i=0 ; i < 7; i++) { 
    if (j % arr[i] == 0) 
     printf("%d is the perfect divisor of %d\n", arr[i], j); 
} 

return 0; 
} 
+0

El OP probablemente debería aclarar si 3 o 9 deberían considerarse el divisor perfecto en esos casos. Asumo 9 porque de lo contrario no tiene sentido que esté en la matriz. En ese caso, deberá realizar un ciclo en orden inverso. – tinman

Cuestiones relacionadas