最小的能够被1到20整除的数

2520是最小的能够被1到10整除的数。

最小的能够被1到20整除的正数是多少?

这个题相当于是求1-20的最小公倍数,我们可以首先考虑如何求解三个数的最小公倍数。比如4,5,6的最小公倍数我们首先求4,5的最小公倍数即为20,我们再求解20和6的最小公倍数,由于最小公倍数=两数相乘/两数最大公因数。则20和6的最小公倍数为20*6/2=60

则此题相当于求解20个数的最小公倍数,那么使用一个循环两两求解即可得出结果
代码如下:

public static int Gys(int a,int b)//求两个数的最大公因数
	{
		int min=a>b?b:a;
		for(int i=min;i>1;i--)
		{
			if(a%i==0&&b%i==0)
			{
				return i;
			}
		}
		return 1;
	}
	public static int Get(int num)//求1~num的最小公倍数
	{
		int res=num*(num-1)/Gys(num,num-1);//res用来存储数字的最小公倍数 。此时为num和num-1的最小公倍数。
		for(int i =num-2;i>=1;i--)
		{
		
			int gys=Gys(res,i);
			res=(res*i)/gys;
			//注意代码这里由于res*i乘完后若数字过大则很可能会产生溢出,可以在定义时便使用long或者里直接写成res=res/gys*i。
			
			
		}
		return res;
	}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值