3472 - 2014-Freshman-02-Divisor
时间限制 : 1 秒
内存限制 : 128 MB
输入两个正整数m和n,求其最大公约数和最小公倍数。
题目输入
输入两个正整数m和n,用空格隔开。
题目输出
分别输出m和n的最大公约数和最小公倍数,用空格隔开。
请注意行尾输出换行。
输入/输出样例
输入格式
15 9 7 35
输出格式
3 45 7 35
C语言解答
int main(int argc, char* argv[]) { int a,b,tem,m,n; while(~scanf("%d%d",&a,&b)) { m=a;n=b; if(b>a) {tem=a;a=b;b=tem; } while(b!=0) {tem=b; b=a%b; a=tem; } printf("%d %d\n",a,m*n/a); } return 0; }
C++解答
#include<iostream> using namespace std; int main() { int m,n; while(cin>>m>>n){ if(m>n) { for(int k=n;k>0;k--) if(m%k==0&&n%k==0){cout<<k<<" ";break;} for(int i=m;i<m*n;i++) if(i%m==0&&i%n==0){cout<<i<<endl;break;} } else if(m<=n){ for(int k=m;k>0;k--) if(m%k==0&&n%k==0){cout<<k<<" ";break;} for(int i=n;i<m*n;i++ ) if(i%m==0&&i%n==0){cout<<i<<endl;break;} } } return 0; }