辗转相除法:又称欧几里得算法,是求两个整数的最大公约数的算法。
辗转相除法原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。
题目信息:求两个正整数的最大公约数和最小公倍数。
题目链接:NYOJ题目40 公约数和公倍数
源代码如下:
#include <iostream> using namespace std; int main() { int n,a,b,lcm,gcd,remd; cin>>n; while(n--) { cin>>a>>b; lcm=a*b; //保存a*b的值后面要用 do { remd=a%b; a=b; b=remd; }while(remd); //辗转相除直到其中一个为0 gcd=a; lcm/=gcd; //最小公倍数=两数之积/最大公约数 cout<<gcd<<' '<<lcm<<endl; } return 0; }