HOJ 2504 又见GCD(最大公约数,水题)

最大公约数,水题
本题要点:
1、步骤:
先假设 a > b, 因为 gcd(a, c) = b, 因此
gcd(a / b, c / b) = 1, 从 c / b = 2 开始扫描,找到第一个
使得 gcd(a / b, c / b) = 1 的 c / b 的值,就是答案。

#include 
#include 
#include 
#include 
using namespace std;
int a, b, c, T;

int gcd(int x, int y)
{
	return y == 0? x : gcd(y, x % y);
}

void solve()
{
	if(a < b)
		swap(a, b);
	int a1 = a / b, c1 = 2;
	while(gcd(a1, c1) > 1)
	{
		++c1;
	}
	printf("%d\n", c1 * b);
}

int main()
{
	scanf("%d", &T);
	while(T--)
	{
		scanf("%d%d", &a, &b);
		solve();
	}
	return 0;
}

/*
2
6 2
12 4
*/

/*
4
8
*/

你可能感兴趣的:(水题,数论,HOJ)