elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  factorización de un número
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: factorización de un número  (Leído 1,064 veces)
estudiante_1

Desconectado Desconectado

Mensajes: 47


Ver Perfil
factorización de un número
« en: 14 Enero 2016, 23:26 »

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.
Código:
#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);

     }


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.478



Ver Perfil
Re: factorización de un número
« Respuesta #1 en: 15 Enero 2016, 00:25 »

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.


En línea

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
fary
Colaborador
***
Desconectado Desconectado

Mensajes: 957



Ver Perfil WWW
Re: factorización de un número
« Respuesta #2 en: 15 Enero 2016, 14:18 »

El código compila correctamente  :rolleyes: no sé que problema tienes con el...

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. int divide(int n,int divisores)
  6. {
  7.    divisores = 2;
  8.    while(n >= divisores)
  9.    {
  10.        while(n%divisores == 0)
  11.        {
  12.            n /= divisores;
  13.        }
  14.        divisores++;
  15.     }
  16.    return(divisores);
  17. }
  18.  
  19. int main()
  20. {
  21.    int n,divisores;
  22.    printf("dime el numero\n");
  23.    scanf("%d",&n);
  24.    printf("%d\n",divide(n, divisores));
  25.  
  26.    system("PAUSE");
  27.    return(0);
  28. }

Ordena el código porque eso que as puesto es un desastre, normal que no encuentres los errores.

saludos.
En línea

Un byte a la izquierda.
MAFUS


Desconectado Desconectado

Mensajes: 1.478



Ver Perfil
Re: factorización de un número
« Respuesta #3 en: 15 Enero 2016, 16:50 »

Código
  1. #include <stdio.h>
  2.  
  3. unsigned divide(unsigned n) {
  4.    unsigned divisores = 1;
  5.    unsigned divisor = 2;
  6.  
  7.    while(n > 1) {
  8.        if(n % divisor == 0) {
  9.            n /= divisor;
  10.            divisores++;
  11.        }
  12.        else
  13.            divisor++;
  14.     }
  15.    return(divisores);
  16. }
  17.  
  18. int main() {
  19.    unsigned n;
  20.  
  21.    printf("Dime el número: ");
  22.    scanf("%u", &n);
  23.    printf("%d\n", divide(n));
  24.  
  25.    return 0;
  26. }
« Última modificación: 15 Enero 2016, 19:23 por MAFUS » En línea

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
Yoel Alejandro

Desconectado Desconectado

Mensajes: 254



Ver Perfil WWW
Re: factorización de un número
« Respuesta #4 en: 18 Enero 2016, 17:23 »

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?
En línea

Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines