HDOJ 1108 最小公倍数

http://acm.hdu.edu.cn/showproblem.php?pid=1108

#include<iostream>//这里用的暴力循环的方法,没有考虑它的时间复杂度,还可以有辗转相除法,
using namespace std;
int main(){
    int n=0,m=0,k=1,minG;
    while(cin>>n>>m){
        if(n>m){
            for(int i=1;i<=m;i++){
                if(n%i==0 && m%i==0)
                    k=i;
            }
        }
        else {
            for(int i=1;i<=n;i++){
                    if(n%i==0 && m%i==0)
                        k=i;
                }
        }
        minG=m/k*n;//这里注意要先除后乘,
        cout<<minG<<endl;
    }
    return 0;
}

 下面是有辗转相除法做的,

 1 #include<iostream>
 2 using namespace std;
 3 int main(){
 4      int n,m,t,da,xiao;
 5      while(cin>>n>>m){
 6         da = (n>m)?n:m;
 7         xiao = (n<m)?n:m;
 8         while(xiao != 0){
 9             t = da % xiao;
10             da = xiao;
11             xiao = t;
12         }
13         cout<<n/da*m<<endl;
14     }
15     return 0;
16 }

 

posted on 2013-05-02 10:24  wsxjbcy  阅读(163)  评论(0编辑  收藏  举报

导航