欧拉计划 发表于 2023-5-9 17:38:33

题目1:找出1000以下自然数中3和5的倍数之和

本帖最后由 欧拉计划 于 2023-7-4 19:16 编辑

题目1:找出1000以下自然数中3和5的倍数之和

Multiples of 3 and 5

If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.

Find the sum of all the multiples of 3 or 5 below 1000.

题目翻译:

10 以下的自然数中,属于 3 或 5 的倍数的有 3, 5, 6 和 9,它们之和是 23。

找出 1000 以下的自然数中,属于 3 或 5 的倍数的数字之和。


视频讲解:

https://www.bilibili.com/video/BV1yX4y127pR/


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

**** Hidden Message *****

Kazimierz 发表于 2023-5-11 10:52:11

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int res = 0;
    for(int i=3;i<1000;i++)
      if(i%3==0||i%5==0) res += i;
    cout<<res<<endl;
    return 0;
}

鸡你实在太没 发表于 2023-5-12 20:06:26

很不错,值得学习,学到了就赚到了

爱吃梨的猩猩 发表于 2023-5-12 20:09:08

真不错嘞可以学活很多

lonely_xiaoying 发表于 2023-5-12 20:12:28

会写算法的人都牛ber一 太厉害辣

凌凌祺 发表于 2023-5-12 21:26:38

本帖最后由 凌凌祺 于 2023-5-12 21:35 编辑

学数学,

clollipops 发表于 2023-5-12 21:28:28

本帖最后由 clollipops 于 2023-7-25 18:33 编辑

233168

不二如是 发表于 2023-5-12 21:32:41

print(sum())

shane9611 发表于 2023-5-13 03:48:18

public static void main(String[] args) {
        int sum = 0;
        for (int i = 0; i < 1000; i++) {
                if (i % 3 == 0 || i % 5 == 0) {
                        sum += i;
                }
        }
        System.out.println(sum);
}

hiworldya 发表于 2023-5-13 10:02:23

学习到啦,感谢感谢,照着做还出错,加油https://xxx.ilovefishc.com/album/202305/13/100014n2vvv818vhvasvcr.jpg

zhangjinxuan 发表于 2023-5-13 16:47:32

枚举当然简单,想看数学做法{:10_254:}

zhangjinxuan 发表于 2023-5-13 16:54:57

O(1) 做法:
#include <stdio.h>

int n;
long long sum = 0; //一个变量统计答案

int main() {
        scanf("%d", &n);
        --n;
        //求出 [1, n) 中 3 的倍数和
        sum += (3 + (n - n % 3)) * (n / 3) / 2;
        //(首项+末项)*项数/2
        //求出 [1, n) 中 5 的倍数和
        sum += (5 + (n - n % 5)) * (n / 5) / 2;
        //减去 [1, n) 中 15 的倍数
        sum -= (15 + (n - n % 15)) * (n / 15) / 2;
        //输出答案
        printf("%lld\n", sum);
        return 0;
}
{:10_279:}

zhuyanan 发表于 2023-5-13 17:34:59

又学习到了,感觉学习编程和数学息息相关

元豪 发表于 2023-5-13 18:57:22

懒得用C++了,写个python。

print(sum())

zhangjinxuan 发表于 2023-5-13 19:49:00

元豪 发表于 2023-5-13 18:57
懒得用C++了,写个python。

print(sum())

你这效率太慢了)笑

O(1)
#include <stdio.h>

int n;
long long sum = 0; //一个变量统计答案

int main() {
      scanf("%d", &n);
      --n;
      //求出 [1, n) 中 3 的倍数和
      sum += (3 + (n - n % 3)) * (n / 3) / 2;
      //(首项+末项)*项数/2
      //求出 [1, n) 中 5 的倍数和
      sum += (5 + (n - n % 5)) * (n / 5) / 2;
      //减去 [1, n) 中 15 的倍数
      sum -= (15 + (n - n % 15)) * (n / 15) / 2;
      //输出答案
      printf("%lld\n", sum);
      return 0;
}
{:10_279:}

元豪 发表于 2023-5-13 19:51:32

zhangjinxuan 发表于 2023-5-13 19:49
你这效率太慢了)笑

O(1)

{:10_256:}只要枚举1000,还是很快滴~

zhangjinxuan 发表于 2023-5-13 19:54:37

元豪 发表于 2023-5-13 19:51
只要枚举1000,还是很快滴~

多测题:你说什么{:10_256:}{:10_256:}{:10_256:}{:10_256:}

zhangjinxuan 发表于 2023-5-13 19:55:49

元豪 发表于 2023-5-13 19:51
只要枚举1000,还是很快滴~

订阅淘专辑,你好像忘了很多天了{:10_269:}

Tiamsy 发表于 2023-5-13 23:53:48

好好学习,天天向上

猫熊同学 发表于 2023-5-24 08:25:25

total = []
for i in range(1000):
    if i % 3 == 0 or i % 5 == 0:
      total.append(i)

print(sum(total))
页: [1] 2 3
查看完整版本: 题目1:找出1000以下自然数中3和5的倍数之和