【1131】C/C++经典程序训练1---最大公约数与最小公倍数(两种方法)

来源:互联网 发布:灵魂相认知乎 编辑:程序博客网 时间:2024/04/30 17:57


C/C++经典程序训练1---最大公约数与最小公倍数

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

输入两个整数,求它们的最大公约数与最小公倍数。

输入

输入两个整数,两个整数之间用空格分开。

输出

第一行输出最大公约数;
第二行输出最小公倍数。

示例输入

6448

示例输出

16192
ps:最小公倍数为两个数的乘积除以最大公约数
方法一:辗转相除法
<span style="font-size:18px;">#include <cstdio>#include <iostream>#include <cstring>#include <cstdlib>using namespace std;int main(){int m,n,m1,n1,t,r; scanf("%d%d",&m,&n); if(m<n){t=m;m=n;n=t;}        m1=m;n1=n;while(r){r=m%n;m=n;n=r;}printf("最大公约数为%d 最小公倍数为%d\n",m,m1*n1/m); return 0;}</span>

方法二:

<span style="font-size:18px;">#include <iostream>#include <cstring>#include <cstdlib>using namespace std;int main(){int i;int m,n;int min,max;int x,y;scanf("%d %d",&m,&n);if(m<n){min=m;max=n;}else{min=n;max=m;}i=min;while(i>=1){if(min%i==0&&max%i==0){x=i;break;}i--;}printf("最大公约数为%d 最小公倍数为%d\n",x,m*n/x); }</span>



0 0
原创粉丝点击