又见GCD

Problem Description
有三个正整数a,b,c(0<a,b,c<10^6),其中c不等于b。若a和c的最大公约数为b,现已知a和b,求满足条件的最小的c。
 
Input
第一行输入一个n,表示有n组测试数据,接下来的n行,每行输入两个正整数a,b。
 
Output
输出对应的c,每组测试数据占一行。
 
Sample Input
2
6 2
12 4
 
Sample Output
4
8
 
 1 #include <stdio.h>
 2 
 3 int get_gcd(int a,int b);
 4 
 5 int main(){
 6     int T;
 7     int a;
 8     int b;
 9     int c;
10     
11     scanf("%d",&T);
12     
13     while(T--){
14         scanf("%d%d",&a,&b);
15         c=2*b;
16         
17         while(1){
18             if(get_gcd(a,c)==b){
19                 printf("%d\n",c);
20                 break;
21             }
22             c+=b;
23         }
24     }
25     
26     
27                 
28     return 0;
29 }
30 
31 int get_gcd(int a,int b){
32     int temp;
33     int remainder;
34     
35     if(a<b){
36         temp=a;
37         a=b;
38         b=temp;
39     }
40     
41     while(a%b){
42         remainder=a%b;
43         a=b;
44         b=remainder;
45     }
46     
47     return b;
48 }

 

posted @ 2014-10-27 18:54  zqxLonely  阅读(247)  评论(0编辑  收藏  举报