Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Riskettos en 6 Noviembre 2017, 22:24 pm



Título: ayuda para terminar el codigo
Publicado por: Riskettos en 6 Noviembre 2017, 22:24 pm
hola amigos, tengo que diseñar un codigo que me diga los div comunes de dos numeros y no consigo terminarlo, el codigo es el siguiente como veran una vez saco los factores de los dos numeros no se seguir


#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int  main()
{
    int A, B, i, j, Div1, Div2, Prove1, Prove2, FactorA, FactorB;
    printf("ALGORITMO QUE CALCULE LOS DIVISORES DE 2 NUMEROS, SU MCD Y MCM, presione intro al dar valores n\n\n");
    printf("Inserte el primer numero \n");
    scanf("%d",&A);
    printf("Inserte el segundo numero \n");
    scanf("%d",&B);
    for(i=1;i<=A;i++){
        Div1=(A/i);
        Prove1=(Div1*i);
        if(Prove1==A){
            printf("\n %d Es divisor de %d \n",i,A);
        }
    }
    for(j=1;j<=B;j++)
    {
        Div2=(B/j);
        Prove2=(Div2*j);
        if(Prove2==B){
            printf("\n %d es divisor de %d \n",j,B);
        }
    } 
    if((Prove1==A)&&(Prove2==B)){
        printf("\n %d es divisor comun \n",     );
    }
system ("pause");
return 0;
}
   
       


Título: Re: ayuda para terminar el codigo
Publicado por: MAFUS en 7 Noviembre 2017, 16:55 pm
No sé si debes sacar el factor común de los números porque te lo pide el ejercicio, pero si no es así usa el algoritmo de Euclides. Este algoritmo es fácil de implementar para un ordenador y con muy poco código da la solución.


Título: Re: ayuda para terminar el codigo
Publicado por: CalgaryCorpus en 8 Noviembre 2017, 05:53 am
En vez de hacer 2 ciclos, haz solo 1. Desde 2 hasta el menor de los 2 números.
Por cada vuelta calcula el módulo de ambos número respecto al índice.
Si dan cero ambos, ahí tienes un divisor.
No puede haber divisores mayores que el mínimo de ambos, por eso el fin del loop es el mínimo de ambos.