公约数和公倍数
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
1
-
描述
- 小明被一个问题给难住了,现在需要你帮帮忙。问题是:给出两个正整数,求出它们的最大公约数和最小公倍数。
解题思路:(使用的是C++,其余语言如不支持int i[n]的,可不按此多次输入然后一次输出的方法,而使用一次输入就有一次输出的方法。重点是辗转相除算法)
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int i[n],j[n];
for(int w=0;w<n;w++)
cin>>i[w]>>j[w];
cout<<endl;
for(int q=0;q<n;q++)
{
int a,b;
a=i[q]>j[q]?i[q]:j[q];//a为两个数之间的最大值
b=i[q]>j[q]?j[q]:i[q];//b为两个数之间的最小值
int c=a%b;//c为a除b的余数
while(c!=0)//当c不等于0时进行辗转相除运算
{
a=b;
b=c;
c=a%b;
}
cout<<b<<" "<<i[q]*j[q]/b<<endl;//b为最大公约数,i[q]*j[q]/b为最小公倍数
}
}