Hola, he hecho un programa que me factoriza un número. Me da error, y yo creo que el error está en dónde poner la función return.
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int divide(int n,int divisores){
divisores=2;
while(n>=divisores){
while(n%divisores==0){
n=n/divisores;
} divisores++;
}
return(divisores);
}
int main(void){
int n,divisores;
printf("dime el numero\n");
scanf("%d",&n);
printf("%d\n",divide(n,divisores));
system("pause");
return(0);
}
A ver:
Presentas el código muy desordenado. Para ti, si haces pruebas y lo puedes entender sigue con él, pero cuándo vayas a presentarlo a más gente ordenalo. Sigue algunas reglas de estructuración. Sé coherente.
Por otra parte pasas como argumentos a las funciones variables que después resultan ser locales de la función.
Estos errores los vas repitiendo post tras post y creo que te los han a corregido numerosas veces.
El código compila correctamente :rolleyes: no sé que problema tienes con el...
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int divide(int n,int divisores)
{
divisores = 2;
while(n >= divisores)
{
while(n%divisores == 0)
{
n /= divisores;
}
divisores++;
}
return(divisores);
}
int main()
{
int n,divisores;
printf("dime el numero\n");
scanf("%d",&n);
printf("%d\n",divide(n, divisores));
system("PAUSE");
return(0);
}
Ordena el código porque eso que as puesto es un desastre, normal que no encuentres los errores.
saludos.
#include <stdio.h>
unsigned divide(unsigned n) {
unsigned divisores = 1;
unsigned divisor = 2;
while(n > 1) {
if(n % divisor == 0) {
n /= divisor;
divisores++;
}
else
divisor++;
}
return(divisores);
}
int main() {
unsigned n;
printf("Dime el número: ");
scanf("%u", &n);
printf("%d\n", divide(n));
return 0;
}
Bueno, al margen de que todas las respuestas anteriores están muy bien y el programa corre perfectamente, tengo una pequeña pregunta respecto al propósito del problema.
¿Se trata de todos los divisores (enteros) del número, o sólo de los divisores primos?
Por ejemplo, probando el programa para el número 24 daría 4 divisores, a saber:
2, 2, 2, 3
Estos divisores así calculados serán primos, pero en realidad son sólo dos divisores distintos: 2 y 3. Faltarían las combinaciones:
1, 2, 3, 4, 6, 12, 24
Entonces, divisores distintos son 7 (5 si se excluyen la unidad y el propio 24), y primos son sólo 2. ¿Qué es lo que se quiere?