辗转相除法

来源:互联网 发布:git ssh 端口 编辑:程序博客网 时间:2024/06/10 22:29

欧几里得算法,又称辗转相除法,可以快速求出最大公约数(gcd)

int gcd(int a,int b){     if(b==0)        return a;     return(b,a%b);}

用最大公约数,我们可以利用公式求lcm:lcm(a,b)=a*b/gcd(a,b)

#include<iostream>#include<cstdio>using namespace std;long long int gcd(long long int a,long long int b){if(b==0){return a;}return gcd(b,a%b);}//用gcd求lcmlong long int lcm(long long int a,long long int b){return (a*b)/gcd(a,b);} int main(){int t=0;cin>>t;for(int k=1;k<=t;k++){long long int i=0,n,m;cin>>n>>m;i=lcm(n,m);cout<<i;}return 0;}