Diseña un programa que dado un número entero positivo,
compruebe si es un número curioso. Un número es curioso si al ser
multiplicado por sí mismo da como resultado otro número acabado
en el número inicial dado.
Por ejemplo: 6 * 6 = 36, 376 * 376 = 141.376.
Este es el codigo que he creado:
Código
El problema con el programa es que cuando calculo el valor del divisor no lo hace de forma correcta, como podeis observar abajo del calculo del divisor he dejado un comentario con solo puntos(....), si yo ahi imprimo el valor que va adquiriendo el divisor no lo hace de forma correcta, me da estos resultados por ejemplo divisor=pow(10, i );
#include <stdio.h> #include <math.h> int main(){ int n,i,p,cont=0,divisor=0; p=n*n; // calculo la multiplicacion for(i=0; cont!=1; i++){ // inicializo el valor de i que sera el exponente /*.................*/ if(divisor>n){ cont++; // si se cumple la condicion anterior, el cont(contador le sumo 1) if(p%divisor==n) //el residuo de esta division tiene que dar como resultado n } return 0; }
sus multiplos deberian ser 1, 10, 100, 1000,....
en vez de eso adopta estos valores 1, 10, 99, 1000, 9999, ....(no entiendo por que???).
por este motivo por el el cual algunas partes me dan bien y otras mal ya que por ejemplo
5*5=25 ...haria 25%10=5 seria un numero curioso en cambio, 25*25=625...625%100=25 tambien seria un numero curioso pero como el múltiplo calculado segun el programa vale 99 y no 100 me sale que no es un numero curioso, sii alguien me pudiera dar una solucion, se lo agradeceria.