蓝桥杯算法训练超全习题题解——ALGO-2.最大最小公倍数**

每日刷题(五十五)

ALGO-2、最大最小公倍数

在这里插入图片描述
在这里插入图片描述
两个数的最小公倍数就是两个数的乘积除以最大公约数,最大公约数就是两个数的最大的相同因子。如果两数互质,那么他们的最小公倍数是他俩的乘积

这个题需要仔细分析,考虑N是奇数还是偶数

1、如果N是奇数,那么他们的最小公倍数最大可以使N * (N - 1) * (N - 2)

2.1、如果N是偶数,那么他们的最小公倍数最大是多少呢,这就需要思考了
因为N是偶数,N - 1肯定是奇数,N - 2又是偶数,偶数和偶数之间可不互质,所以我们需要把N - 2 换成 N - 3,即为N * (N - 1) * (N - 3),就是2.2的情况,那么问题又来了,如果N是3的倍数,那么从贪心的角度看,我们先前是考虑N - 2的值,现在我们应该考虑N的值是否发生变化使得式子成立,
即改为(N - 1) * (N - 2) * (N - 3)

2.2、最小公倍数最大为N * (N - 1) * (N - 3),为什么不考虑除3以外的数字呢,因为其他数字不会是3的倍数,这点很容易理解

这里需要注意的一点:因为N的上限很大,我们需要采用long long型

详细C代码如下:

#include<stdio.h>

int main()
{
	long long N;
	scanf("%lld", &N);
	int i;
	if(N <= 3)
	{
		long long sum = 1;
		for(i = 1; i <= N; i++)
		{
			sum *= i;
		}
		printf("%d\n", sum);
		return 0;
	}
	if(N % 2)		//奇数 
	{
		printf("%lld\n", (N * (N - 1) * (N - 2)));
	}
	else if(N % 3)		//偶数,不能被3整除 
	{
		printf("%lld\n", (N * (N - 1) * (N - 3)));
	}
	else
	{
		printf("%lld\n", ((N - 1) * (N - 2) * (N - 3)));
	}
	return 0;
} 

部分运行结果如下:
在这里插入图片描述
在这里插入图片描述

如果喜欢我的文章,请记得三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持,下期更精彩!!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值