0

ユーザーが2つの正の整数を入力できるようにするプログラムを作成しようとしています。次に、ユークリッド アルゴリズムと除算を使用して、2 つの数値の最大公約数と最小公倍数を計算します。ユーザーがこれを何度も繰り返すことを許可する

これは私がこれまでに持っているコードです。無限ループが発生していますが、その理由がわかりません。助けてください

int main(int argc, char** argv) {

   int posint1, posint2, remainder, Lcm, divisor, dividend;
   int num = 0;

   while(num != -1)
   {
    printf("Enter a positive number to begin Euclidean algorithm ( enter -1 to stop): ");
    scanf("%C", & num );
    if (num != -1)
    {  
printf("Enter the first positive integer ");
scanf("%d", & posint1);
printf("Enter the second positive integer ");
scanf("%d", & posint2);


if (posint1 > posint2)
{
    divisor = posint2;
    dividend = posint1;

    while(posint1 != 0);
    {
        remainder = dividend % divisor;
        dividend = divisor;
        divisor = remainder;         
    }
   printf("The Greatest Common Divisor is %d \n", dividend);
     Lcm = (posint1 * posint2) / dividend;
     printf("The Least Common Multiple is %d \n", Lcm);    
 }

else 

{
 divisor = posint1;
 dividend = posint2;

 while(posint2 != 0);
    {
     remainder = dividend % divisor;
     dividend = divisor;
     divisor = remainder;
    }
 printf("The Greatest Common Divisor is %d \n", dividend);
     Lcm = (posint2 * posint1) / dividend;
     printf("The Least Common Multiple is %d \n", Lcm);  
 }
 }
 }


return (EXIT_SUCCESS);
}
4

1 に答える 1