ACMNO.7 输入两个正整数m和n,求其最大公约数和最小公倍数。 输入 两个整数 输出 最大公约数,最小公倍数 样例输入 5 7 样例输出 1 35

题目描述

输入两个正整数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执行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值