Anuncios Google

Descomponiendo numeros

Es un programa de pc, pero en la practica no hay diferencia alguna con la nds (Al menos en este codigo).

Asi que lo pongo por aqui. El programa consiste en un descomponedor de numeros, tu le metes un numero y te lo descompone. Por ejemplo, si le pones un 8. El programa te devolvera 2x2x2.

Esa es la teoria, pero en la practica el programa me devuelve el mismo numero y sin embargo yo no le veo ningun error. Os dejo por aqui el codigo:

#include <stdio.h>
#include <stdlib.h>
int numero;
int i;
int divisores[128];
int divisible(int numeross){
    int divisor = 1;
 
       while (((numeross % divisor) != 0)&& (numeross > divisor)){
             divisor++;
             }
 
            if (numeross% divisor == 0){
             return divisor;
             }
             else{
                  return 1;
                  }
 
 
                  }
int main(int argc, char *argv[])
{
  printf("Descomponedor de numeros");
printf("\n");
printf("\n");
printf("Introduce el numero: ");
       scanf("%d",&numero);
getchar();
printf("\n");
while(divisible(numero) > 1){
divisores[i] = divisible(numero);
numero /= divisible(numero);
i++;
}
i = 0;
printf("El numero es: %d",numero);
while(i < 128){
        if(divisores[i] != 0){
printf(" x %d",divisores[i]);
}
}
 
system("PAUSE");	
  return 0;
}


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de best_guitar

mal echo pero que funciona

mal echo pero que funciona es divisor = 2 por que si es =1 nunca entras en el bucle.

y i++ dentro del ultimo while para que escriba bien.

 No es muy optimo... pero creo que va.

Ya funciona correctamente,

Ya funciona correctamente, gracias guitar!.

 

Lo de la optimizacion... A mi me descompone los numeros sin problemas hasta un determinado limite que supongo que debe ser el de las variables int. Si consiguiera aumentar el limite un poco mas (me parece insuficiente) seria perfecto.

Mirare un poco por google : p.

yo creo que no se refiere a

yo creo que no se refiere a 128 espacios en o 512 en el array...sino a que el número 2560 te lo descompone por ejemplo, pero el 3.695.876.987 se pasa del rango admitido por los enteros y por eso no lo descompone.

si solo vas a usar enteros positivos usa u32 que llegan hasta 4.294.967.295

si te interesa tb con números negativos   -2.147.483.647 <= s32 =>2.147.483.647

sigue estando bastante limitado si quieres usar números grandes.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.