2、最大最小公倍数(蓝桥杯算法训练)

问题描述
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。

输入格式
输入一个正整数N。

输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504

思路:
第一步:读懂题目(因为刚开始没有读懂题目,打错了很多)。破题,输入一个数字n,从1~n中任选三个数使得他们的最小公倍数是其他组合里面最大的存在。eg输入:9,任选三个数9、8、7,他们的最小公倍数987=504.

第二步:选出这三个数,分情况讨论
1、如果n是奇数,以n=9为例,出现最大最小公倍数的三个数为9、8、7分别是n、(n-1)、(n-2)

2、如果n是偶数,以n=8为例,出现最大最小公倍数的三个数为8、7、5分别是n、(n-1)、(n-3),由于6、7、8中6,8有公因数2,不能形成最大最小公倍数,所以取5。

3、由于n、(n-3)之间如果3是n的因数,则n、(n-3)之间也存在公因数3,所以此时出现最大最小公倍数的三个数(n-1)(n-2)(n-3)

代码如下:

# include <stdio.h>
int main()
{
	_int64 n;
	scanf ("%I64d",&n);
	if(n%2!=0)
		printf("%I64d\n",n*(n-1)*(n-2));
	else if(n%3!=0)
		printf("%I64d\n",n*(n-1)*(n-3));
		else
			printf("%I64d\n",(n-2)*(n-1)*(n-3));
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值