[C++]暴力求解多个数的最小公倍数

在一些情景中会遇到需要求解最小公倍数的情况,两个数甚至多个数的最小公倍数

可以使用暴力求解的方法来实现

例如下题:

题目描述

在爱尔兰守神节那天,举行每年一度的庆祝游戏,指挥者若将乐队排成10人、9人、8人、7人、6人、5人、4人、3人和2人一排时,最后的一排总是缺少一个人。

那些人想这个位置大概是给数月前死去的乐队成员凯西还留着位置。指挥者见到总缺一人恼火了,叫大家排成一列纵队前进。

编程算出乐队究竟有多少人?(求出最小数)(需要有循环结构),将结果输出到out.txt文件中。

题目解读

实质是求10,9,8,7,6,5,4,3,2的最小公倍数

核心代码
int fun()
{
    for(int t=19;;t+=10)//因为假设答案为s,则s+1为10的倍数,s=9+n*10(n为某一整数)
                        //所以t也以十倍增长
    {
        if(t%10==9&&t%9==8&&t%8==7&&t%7==6&&t%6==5&&t%5==4&&t%4==3&&t%3==2&&t%2==1)
        {    
            return t;//return结束函数调用
        }
    }
}

对以上代码进行优化

int fun()
{
    for(int i=19,j;;i+=10)
    {
	    for(j=2;j<=10;j++)
	        {                //j记录求余数的情况,从对2取余到10取余;
                        //若符合则j++;
                 if(i%j!=j-1)
                {    
                    break;
                }
            }
	    if(j==11)
		    return i;//如果在i不变的情况下j取到11;意味着此时i满足所以条件;输出i,并结束函数调用
    }
}
全部代码
#include<fstream>
using namespace std;
int fun()
{
	for(int i=19,j;;i+=10){
		for(j=2;j<=10;j++)
			if(i%j!=j-1)break;
		if(j==11)
			return i;
	}
}
int main()
{
	ofstream outf("out.txt");//文件流绑定
	outf<<fun()<<endl;
	return 0;	
}

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值