题目描述
输入两个正整数m和n,求其最大公约数和最小公倍数。
输入
两个整数
输出
最大公约数,最小公倍数
样例输入
5 7
样例输出
1 35
来源/分类
C语言
示例照片:
设计思路:
本题最难的就是,寻找的算法~(简单的也叫做算法)
最大公约数:
1,首先最大最大,就只是二者中的最小的一位数啦呗!
所以我们整个先决条件:
if(a>=t)
i=t;
else
i=a;
令i等于其中最小的一个!
进行下面来筛选:
do{
if(a%i==0&&t%i==0)
{
max=i;
break;
}
i--;
}while(i>0);
二者中最小的数,每一次循环就减去一。为零的时候,循环结束!
碰到二者都可以取%运算为零的时候!赶紧break。要不只会是结果为1!
这样就可以取得最大公约数啦!
最小公倍数:
先决条件: i=1;
不断增加,极端情况会出现最小公倍数是二者的乘积!所以以这个界限为限定条件!
道理都是取%运算!
do{
if(i%a==0&&i%t==0)
{
min=i;
break;
}
i++;
}while(i<=a*t);
这样就可以获得最小公倍数啦!
整体代码:
#include<iostream>
using namespace std;
int main()
{
int a,t,min,max;int i;
cin>>a>>t;
if(a>=t)
i=t;
else
i=a;
do{
if(a%i==0&&t%i==0)
{
max=i;
break;
}
i--;
}while(i>0);
i=1;
do{
if(i%a==0&&i%t==0)
{
min=i;
break;
}
i++;
}while(i<=a*t);
cout<<max<<" "<<min;
}
图片:
OJ执行结果: