鱼C论坛

 找回密码
 立即注册
查看: 1505|回复: 20

题目5:请找出能被1~20中每个数整除的最小正整数

[复制链接]
发表于 2023-5-15 05:02:13 | 显示全部楼层 |阅读模式

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

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

x
题目5:请找出能被1~20中每个数整除的最小正整数


Smallest multiple

2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.

What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?


题目翻译:

2520 是能被 1~10 中每个数字整除的最小正整数。

请找出能被 1~20 中每个数整除的最小正整数?


视频讲解:




思路解析及源码参考(C & Python):

游客,如果您要查看本帖隐藏内容请回复



评分

参与人数 1荣誉 +2 收起 理由
zhangjinxuan + 2

查看全部评分

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

使用道具 举报

发表于 2023-5-15 19:09:48 | 显示全部楼层
本帖最后由 zhangjinxuan 于 2023-7-4 19:35 编辑

即 lcm(1, 2, 3, 4, ... , 19, 20)
#include <bits/stdc++.h>
using namespace std;


int main() {
        int ans = 1;
        for (int i = 1; i <= 20; ++i) {
                int tmp = __gcd(ans, i);
                ans = 1ll * ans * i / tmp;
        }
        printf("%d\n", ans);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-16 09:31:54 | 显示全部楼层
#include <bits/stdc++.h>
using namespace std;

typedef long long LL;

LL gcd(LL a,LL b)
{
    return b?gcd(b,a%b):a;
}

LL lcm(LL a,LL b)
{
    return a*b/gcd(a,b);
}

int main()
{
    LL ans = 1;
    for(int i=1;i<=20;i++) ans = lcm(ans,i);
    cout<<ans<<endl;
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-29 00:31:05 | 显示全部楼层
完成
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-2 14:05:14 | 显示全部楼层
Good object
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-6 09:11:13 | 显示全部楼层
# 方法一
# 232792560
# 一共用时14.778秒

i = 21
while True:
    if i % 6 == 0:
        if i % 7 == 0:
            if i % 8 == 0:
                if i % 9 == 0:
                    if i % 10 == 0:
                        if i % 11 == 0:
                            if i % 12 == 0:
                                if i % 13 == 0:
                                    if i % 14 == 0:
                                        if i % 15 == 0:
                                            if i % 16 == 0:
                                                if i % 17 == 0:
                                                    if i % 18 == 0:
                                                        if i % 19 == 0:
                                                            if i % 20 == 0:
                                                                print(i)
                                                                break
                                                            else:
                                                                i += 1
                                                        else:
                                                            i += 1
                                                    else:
                                                        i += 1
                                                else:
                                                    i += 1
                                            else:
                                                i += 1
                                        else:
                                            i += 1
                                    else:
                                        i += 1
                                else:
                                    i += 1
                            else:
                                i += 1
                        else:
                            i += 1
                    else:
                        i += 1
                else:
                    i += 1
            else:
                i += 1
        else:
            i += 1
    else:
        i += 1

# 方法二
# 232792560
# 一共用时57.203秒

is_true = 0
if_false = 0

i = 21
while True:
    for j in range(6, 21):
        if i % j == 0:
            is_true = 1
            is_false = 0
        else:
            is_false = 1
            is_true = 0
        if is_false == 1:
            break
    if is_true == 1:
        print(i)
        break
    i += 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-9 23:49:25 From FishC Mobile | 显示全部楼层
5666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-11 00:06:39 From FishC Mobile | 显示全部楼层
6
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-25 09:45:15 | 显示全部楼层
6
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-3 06:57:21 | 显示全部楼层
answer
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-7 16:34:13 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-18 22:43:59 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-1 14:23:00 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-7 19:27:25 | 显示全部楼层
public static void main(String[] args) {
        long res = 1;
        for (long i = 2; i < 21; i++) {
            res = lcm(res, i);
        }
        System.out.println(res);
    }

    private static long lcm(long a, long b) {
        return a * b / gcd(a, b);
    }

    private static long gcd(long a, long b) {
        if (b == 0) return a;
        return gcd(b,a % b);
    }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-12 16:33:49 | 显示全部楼层
lcm()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-28 21:12:41 | 显示全部楼层
猫熊同学 发表于 2023-6-6 09:11
# 方法一
# 232792560
# 一共用时14.778秒

这代码写的和跳舞一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-28 21:15:27 | 显示全部楼层
直接计算最大公约数
用时 <0.01ms
int main ( )
{
    Ulong res = 1;
    for (int i = 1; i <= 20; i++)
    {
        res = res * i / std::gcd (res, i);
    }
    cout<<ans<<endl;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-4 12:21:10 From FishC Mobile | 显示全部楼层
test
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-4 14:59:19 | 显示全部楼层
一路看过来,还是鱼c做得最好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-4 16:16:30 | 显示全部楼层
学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 21:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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