鱼C论坛

 找回密码
 立即注册
查看: 1522|回复: 2

最小众倍数问题,求大佬帮看哈代码,跑不了

[复制链接]
发表于 2021-8-5 22:12:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

                               
登录/注册后可看大图

intleastMajorityMultiple(int a, int b, int c, int d, int e){
  int max =1;
   while(1==1){
        int cnt = 0;
            if(max%a == 0){cnt ++;}
         if(max%b == 0){cnt ++;}
         if(max%c == 0){cnt ++;}
         if(max%d == 0){cnt ++;}
         if(max%e == 0){cnt ++;}
         if(cnt>=3 ){
             break;
            }else{max++;}
   }
   return max;
}


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-6 07:39:20 From FishC Mobile | 显示全部楼层
最小众倍数是啥意思
如果是最小公倍数的话,不应该先求最大公约数吗,你那代码是神马鬼,看不懂啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-6 08:39:39 | 显示全部楼层
公倍数的思路是同时满足对这些数求余等于0,先if(max%a==0),然后下一个判断条件包含在if语句下,相当于套娃那样,满足这个再进行判断下一个是否满足那样。然后看你的代码,为什么是cnt>=3?既然是公倍数,那肯定对这些数求余都要等于0,应该是cnt==5吧。也可以直接在都满足的条件下直接break,就不需要用cnt这个变量了。
int leastMajorityMultiple(int a, int b, int c, int d, int e) {
    int max = 1;
    while (true) {
        if (max % a == 0) {
            if (max % b == 0) {
                if (max % c == 0) {  
                    if (max % d == 0) {
                        if (max % e == 0) { break;
                        }
                    }
                }
            }
        }
        max++;
    }
    return max;
}

int main()
{
    int num = leastMajorityMultiple(1, 2, 3, 4, 5);
    printf("%d",num);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 22:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表