鱼C论坛

 找回密码
 立即注册
查看: 2727|回复: 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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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


  3. int main() {
  4.         int ans = 1;
  5.         for (int i = 1; i <= 20; ++i) {
  6.                 int tmp = __gcd(ans, i);
  7.                 ans = 1ll * ans * i / tmp;
  8.         }
  9.         printf("%d\n", ans);
  10.         return 0;
  11. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  3. typedef long long LL;

  4. LL gcd(LL a,LL b)
  5. {
  6.     return b?gcd(b,a%b):a;
  7. }

  8. LL lcm(LL a,LL b)
  9. {
  10.     return a*b/gcd(a,b);
  11. }

  12. int main()
  13. {
  14.     LL ans = 1;
  15.     for(int i=1;i<=20;i++) ans = lcm(ans,i);
  16.     cout<<ans<<endl;
  17.     return 0;
  18. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-29 00:31:05 | 显示全部楼层
完成
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-6-2 14:05:14 | 显示全部楼层
Good object
小甲鱼最新课程 -> https://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
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-9 23:49:25 From FishC Mobile | 显示全部楼层
5666
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-6-11 00:06:39 From FishC Mobile | 显示全部楼层
6
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-6-25 09:45:15 | 显示全部楼层
6
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-7-3 06:57:21 | 显示全部楼层
answer
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-7 16:34:13 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-7-18 22:43:59 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-8-1 14:23:00 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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

  11.     private static long gcd(long a, long b) {
  12.         if (b == 0) return a;
  13.         return gcd(b,a % b);
  14.     }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-12 16:33:49 | 显示全部楼层
lcm()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

这代码写的和跳舞一样
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-28 21:15:27 | 显示全部楼层
直接计算最大公约数
用时 <0.01ms
  1. int main ( )
  2. {
  3.     Ulong res = 1;
  4.     for (int i = 1; i <= 20; i++)
  5.     {
  6.         res = res * i / std::gcd (res, i);
  7.     }
  8.     cout<<ans<<endl;
  9. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-4 12:21:10 From FishC Mobile | 显示全部楼层
test
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-1-4 14:59:19 | 显示全部楼层
一路看过来,还是鱼c做得最好
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-4 16:16:30 | 显示全部楼层
学习了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-19 23:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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