【问题标题】:What is wrong with the following c code? the gcd stops working after i enter into the loop以下c代码有什么问题?我进入循环后 gcd 停止工作
【发布时间】:2015-12-16 09:54:32
【问题描述】:
#include <stdio.h>
int gcd(int a, int b);

int lcm(int x ,int y);

int main()

{

    int num1, num2, k, hcf,max,n;
    scanf("%d",n);
    for (k=0;k<n;k++)
    {
    scanf("%d %d", &num1, &num2);
    hcf=gcd(num1,num2);
    max=lcm(num1,num2);
    printf("%d %d\n", hcf,max);
}

 return 0;

}

int gcd(int a, int b)

{

    int i,f;
    for(i=1;i<=a || i<=b; i++)
    if (a%i==0 && b%i==0)
    f=i;
    return f;
}

int lcm(int x ,int y)

{

int m;

m=(x>y) ? x : y; 

 while(1)                       
  {

      if(m%x==0 && m%y==0)
      {
          return m;
          break;          
      }
      ++m;
  } 

return x,y;

}

【问题讨论】:

    标签: c greatest-common-divisor cc lcm


    【解决方案1】:
    scanf("%d",n);
               ^ & missing 
    

    这里需要n 的地址,因为%d 需要int 的地址。在此处添加&amp; -

    scanf("%d",&n);
    

    还有这个-

      return x,y; 
    

    我不知道你从中理解(或期望)什么,但只会返回y

    【讨论】:

      【解决方案2】:

      问题已经回答,是的,

      scanf( "%d" , &n );
      

      但是下面是上述程序的替代方案。

      int main() {
      
              int num1, num2, k, hcf,max,n;
              //scanf("%d",n);
              scanf("%d",&n);
              for (k=0;k<n;k++) {
                      scanf("%d %d", &num1, &num2);
                      hcf=gcd(num1,num2);
                      //max=lcm(num1,num2);
                      // LCM = ( n1, n2 )/ GCD will work in your case    
                      max = ( num1 * num2 ) / hcf ;   
                      printf("%d %d\n", hcf,max);
              }
              return 0;
      }
      
      int gcd(int a, int b) {
              int i,f;
              for(i=1;i<=a || i<=b; i++) {
                      if (a%i==0 && b%i==0) {
                              f=i;
                      }
              }
              return f;
      }
      

      【讨论】:

      • 啊,我想通了。非常感谢。
      猜你喜欢
      • 2021-07-30
      • 2022-12-06
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-11
      相关资源
      最近更新 更多