杭电ACM——HDU-1108最小公倍数

来源:互联网 发布:淘宝怎么联系卖家售后 编辑:程序博客网 时间:2024/05/12 20:17

HDU   1108


此题有两种方法:

(1)欧几里德求最大公约数,再求最小公倍数

#include<iostream>using namespace std;int fun(int a,int b){while(a!=b){if(a>b) a=a-b;//欧几里德法,只要两个数不相等,就反复要大数减小数,直到相等为止if(a<b) b=b-a;}return a;}int main(){int n,m,s;while(cin>>n>>m){if(n!=m){s=fun(n,m);cout<<n/s*m<<endl;}else{s=m;cout<<s<<endl;}}return 0;}



(2)辗转相除法求最大公倍数,再求最小公倍数

#include<iostream>using namespace std;int gcd(int a,int b){if(a<b) return gcd(b,a);//比较大小,交换位置if(b==0) return a;return gcd(b,a%b);//辗转相除法}int main(){int n,m,s;while(cin>>n>>m){if(n!=m){s=gcd(n,m);cout<<n/s*m<<endl;//先除再乘,以免超出限制}elsecout<<n<<endl;}return 0;}


0 0
原创粉丝点击