2015-09-19 4 views
-3
#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; 

} 

ответ

2
scanf("%d",n); 
     ^& missing 

Вы должны здесь адрес n как %d ожидает адрес междунар. Добавить & там -

scanf("%d",&n); 

И это -

return x,y; 

Я не знаю, что вы понимаете (или ожидать) от него, но будет возвращать только y.

0

Вопрос уже ответили и да,

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; 
} 
+0

Ahh Я понял это. Огромное спасибо. –