【求最大公约数和最小公约数】

本文探讨了如何使用递增和递减的方式分别找到两个数的最大公约数(MCM)和最小公约数(LCM)。首先,通过比较输入的两个数,确定起点;然后,递增或递减遍历,寻找能同时整除两个数的因子,实现高效的约数查找。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原理:通过循环语句找到递增/递减找到最大的约数


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);//输入两个数
	int i;
	int min = 0;
	int count = 0;
	
	if (a > b)
	{
		min = b;
	}
	else
	{
		min = a;
	}
	//这块代码实现两个数大小的排序
	
	for (i = min; i > 2; i--)	
	{
		if (a % i == 0 && b % i == 0)
		{
			count = i;
			break;
		}
	}
	//这段代码的意思是:从较小数开始检验是否能整除
	//如果找到了,就赋值给count,同时中止循环
	printf("%d", count);
	return 0;
}
  • 我们通过递减的方法找到了最大公约数,是否能够通过递增的方法找到最小公约数呢?
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);//输入两个数
	int i;
	int min = 0;
	int count = 0;
	
	if (a > b)
	{
		min = b;
	}
	else
	{
		min = a;
	}
	//这块代码实现两个数大小的排序
	
	for (i = 2; i <max; i++)	
	{
		if (a % i == 0 && b % i == 0)
		{
			count = i;
			break;
		}
	}
	//这段代码的意思是:从2开始检验是否能整除
	//如果找到了,就赋值给count,同时中止循环
	printf("%d", count);
	return 0;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不爱吃鱼的怪兽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值