El operador resto de la división entera en C

– Prog060

/* Prog060.cpp */
#include <stdio.h>
void main()
{
int n,i,resto;
printf(«Escribe un número: «);
scanf(«%d»,&n); for(i=2;i<n-1;i++)
{
resto=n % i;
if ((resto==0) && (n != 2))
{
printf(«n No es primo»); return;
}
}
printf(«n %d es un número primo»,n);
}

Estudio del PROG060: n % i

Nos da el resto de la división entera entre n y i (% es un operador como lo es la suma o el producto).

Vamos a hacer el mismo programa que el anterior pero a través de una función:int primo(int num)

– Prog061

/* Prog061.cpp */

#include <stdio.h>
int primo(int num);
void main()
{
int n;
printf(«n Escribe un número: «);scanf(«%d»,&n); if (primo(n)==1)
printf(«nn Es primo»);
else printf(«nn No es primo»);
}
int primo(int num)
{
int resto,i,result; for(i=2;i<num-1;i++)
{
resto=num % i;
if((resto==0) && (num != 2)) return 0;
}
return 1;
}

– Prog062

/* Prog062.cpp */
/* Programa que dado un número ‘N’ escribe todos los números comprendidos entre 1 y 10.000, que cumplen las siguientes reglas:

– La suma de sus cifras debe ser un divisor de N
– El producto de sus cifras debe ser un múltiplo de ‘N’ */

#include <stdio.h>
void main()
{
int n,i,c1,c2,c3,c4,suma,producto;
printf(«nEscribe un número: «);scanf(«%d»,&n); for (i=1;i<=9999;i++)
{
c1=int(i/1000); c2=int((i % 1000)/100);
c3=int(((i % 1000) % 100)/10); c4=(((i % 1000) % 100) % 10); suma=c1+c2+c3+c4; producto=c1*c2*c3*c4;
if ((n % suma == 0) && (producto % n == 0) && (suma <= n) && (producto >= n))
{
printf(«%5d»,i);
printf(«n»);
}
}
}

Fuente: Programación en C/C++ (Manual FV) de Fermí Vilà