hdoj 2504 又见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
![](https://img2018.cnblogs.com/blog/1195588/201904/1195588-20190404103349437-204856537.png)
因为b不等于c,所以y不能等于1,Gcd(x,y)如果大于一,那么最大公约数,就不为b了。
1 #include <iostream> 2 #include <stdio.h> 3 using namespace std; 4 int gcd(int a,int b) 5 { 6 return b==0?a:gcd(b,a%b); 7 } 8 int main() 9 { int n,a,b; 10 scanf("%d",&n); 11 while (n--) 12 { 13 int c,i=2; 14 cin>>a>>b; 15 c=a/b; 16 for(;gcd(c,i)!=1;i++); 17 cout<<b*i<<endl; 18 } 19 return 0; 20 }