E - 又见GCD
BZU春季选拔赛过程中,由于选拔要求,每次比赛得有个数论的题,考虑到大家刚入门,出了个相对来说简单点的题。现给你两数字a和b,如果a和c的最大公约数是b且c不等于b,那么要求满足条件的最小的c,但是D学长觉得这个问题太简单了,决定拿出来考一考新加入集训队的同学们。那么,你能解决这个问题吗?
Input
第一行输入一个n,表示有n组测试数据,接下来的n行,每行输入两个正整数a,b。 a,b小于100000.
Output
输出对应的c,每组测试数据占一行。
Sample Input
2
6 2
12 4
Sample Output
4
8
水题一个,暴力求解即可,也可以用库函数里的gcd。
代码:
#include <iostream>
using namespace std;
int gcd(int m,int n)
{
if(n==0)
return m;
else
return gcd(n,m%n);
}
int main()
{
int n;
cin>>n;
for(int j=1;j<=n;j++){
int a,b;
cin>>a>>b;
for(int i=1;i<a;i++){
int k;
k=gcd(a,i);
if(k==b&&i!=b){
cout<<i<<endl;
break;
}
}
}
return 0;
}