题目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 *****
#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;
} 很不错,值得学习,学到了就赚到了 真不错嘞可以学活很多 会写算法的人都牛ber一 太厉害辣 本帖最后由 凌凌祺 于 2023-5-12 21:35 编辑
学数学, 本帖最后由 clollipops 于 2023-7-25 18:33 编辑
233168 print(sum())
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);
} 学习到啦,感谢感谢,照着做还出错,加油https://xxx.ilovefishc.com/album/202305/13/100014n2vvv818vhvasvcr.jpg 枚举当然简单,想看数学做法{:10_254:} 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:} 又学习到了,感觉学习编程和数学息息相关 懒得用C++了,写个python。
print(sum()) 元豪 发表于 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:} zhangjinxuan 发表于 2023-5-13 19:49
你这效率太慢了)笑
O(1)
{:10_256:}只要枚举1000,还是很快滴~ 元豪 发表于 2023-5-13 19:51
只要枚举1000,还是很快滴~
多测题:你说什么{:10_256:}{:10_256:}{:10_256:}{:10_256:} 元豪 发表于 2023-5-13 19:51
只要枚举1000,还是很快滴~
订阅淘专辑,你好像忘了很多天了{:10_269:} 好好学习,天天向上 total = []
for i in range(1000):
if i % 3 == 0 or i % 5 == 0:
total.append(i)
print(sum(total))