Problem 1 Multiples of 3 or 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.

问题 1 3 或 5 的倍数

如果我们列出所有小于 10 且是 3 或 5 的倍数的自然数,我们会得到 3、5、6 和 9。这些倍数之和是 23。
求 1000 以下所有 3 或 5 的倍数之和。

思路分析

暴力求解

常规思路,找到 1000 以内所有 3 或 5 的倍数,分别求和解决

优化思路

由于暴力解法的算法执行效率很低,需要重复遍历 1000 次,自然效率低下。我们只需要枚举 3 的倍数之和、5 的倍数之和,最后减去它们的最小公倍数之和,便可节省不少时间

1000 以内 k 的倍数和为

(1000−1)k\large \frac{\left (1000-1 \right)}{k} k(1000−1)​

代码实现

暴力求解

/** @Author: coder-jason* @Date: 2022-04-04 22:59:48* @LastEditTime: 2022-04-04 23:00:56*/
#include <iostream>using namespace std;int main()
{int sum = 0;for (int i = 0; i < 1000;i++){if (i % 3 == 0 || i % 5 == 0){sum += i;}}cout<<sum<<endl;return 0;
}

优化思路

/** @Author: coder-jason* @Date: 2022-04-04 22:59:48* @LastEditTime: 2022-04-04 23:14:34*/
#include <iostream>using namespace std;int calculate()
{int sum3 = 0, sum5 = 0, sum15 = 0;for (int i = 0; i <= (1000 - 1) / 3; i++){sum3 += i * 3; //求出3的倍数的和}for (int i = 0; i <= (1000 - 1) / 5; i++){sum5 += i * 5; //求出5的倍数的和}for (int i = 0; i <= (1000 - 1) / 15; i++){sum15 += i * 15; //求出15的倍数的和}return sum3 + sum5 - sum15;
}int main()
{cout << calculate();return 0;
}

答案:233168

通过啦,既然是第一次,还是截个图记录下叭。以后也要继续加油啊,数学的优雅永不过时!!

【欧拉计划第 1 题】3 或 5 的倍数 Multiples of 3 or 5相关推荐

  1. 【欧拉计划第 5 题】最小公倍数 Smallest multiple

    Problem 5 Smallest multiple 2520 is the smallest number that can be divided by each of the numbers f ...

  2. 【欧拉计划第 13 题】 大数之和 Large sum

    Problem 13 Large sum Work out the first ten digits of the sum of the following one-hundred 505050-di ...

  3. 欧拉计划 第5题 Smallest multiple

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

  4. 详解欧拉计划第395题:毕达哥拉斯树

    本题难度系数为40%(最易5%,最难100%). 毕达哥拉斯树是按如下步骤生成的分形图形: 从一个单位正方形开始,以其中一条边为基底(在图示中,单位正方形下放的边作为基底),给基底所对的边粘连上一个三 ...

  5. 欧拉计划:第53题 Combinatoric selections

    欧拉计划:第53题 Combinatoric selections 无意中知道有这个用编程解决数学题的网站,个人对数学又比较感兴趣,所以打算做个欧拉计划系列,将自己的一些见解分享给大家,第一次写文章, ...

  6. 欧拉计划(project euler)最详细中文题解

    欧拉计划是一个在线解题网站,题目以各类数学问题为主,通常需要结合一定的数学与编程知识,写出适当的程序求解问题(详细介绍可以参见我的文章).相比于力扣等刷题网站,欧拉计划上的题目有着更丰富的知识背景,在 ...

  7. 欧拉计划 P429 (数论)

    欧拉计划 P429 Sum of squares of unitary divisors(数论) 传送门:https://projecteuler.net/problem=429 题目大意: 定义一个 ...

  8. 欧拉计划(鱼C论坛)@20161107

    1.10以下的自然数中,属于3或5的倍数的数字有3,5,6,9,它们之和为23找出1000以下的自然数中,属于3或5倍数的所有数字之和. """ 欧拉计划 10以下的自然 ...

  9. 欧拉计划 Project Euler 50-56

    Project Euler 50-56 Project Euler: https://projecteuler.net/ Project Euler | 欧拉计划: https://pe-cn.git ...

  10. python求直角三角形个数的公式_Python3 欧拉计划 问题71-75

    EulerProject.png 问题66-70参见:https://www.jianshu.com/p/d0fad6213433 71.有序分数 考虑形如n/d的分数,其中n和d均为正整数.如果n ...

最新文章

  1. Python的with...as的用法
  2. 信息系统项目管理师-信息系统项目管理基础核心知识点思维脑图
  3. 通常每个套接字地址只允许使用一次
  4. 公众平台模板消息所在行业_第三方工具微信公众号模板消息群发如何操作?
  5. Java基础——String类(一)
  6. 前端读取文件图片信息流;js读取图片不同信息流;js读取图片;前端就js读取二进制数据;前端js读取文件流使用FileReader对象的readAsDataURL方法来读取图像文件;
  7. Html5学习进阶一 视频和音频
  8. Android Audio打开输出设备流程(十五)
  9. 初识计算机操作系统与进程
  10. 好用的百度文库下载工具: 易读
  11. 【敏捷2.2】极限编程XP
  12. 现代经济中的货币创造
  13. CODOSYS之结构化文本(ST)—— 初级篇(二)简介与基本概念
  14. eclipseWTP插件
  15. Java之网络编程(三)TCP
  16. 全网最详细的深度学习pytorch-gpu环境配置
  17. Docker容器化开发流程(一)介绍
  18. 哈哈哈哈哈 哈哈哈哈哈 哈哈哈哈哈
  19. Ubuntu下安装使用Xfce4
  20. 如何给妹子优化 Windows ?

热门文章

  1. H.266/VVC代码学习:普通量化和率失真优化量化(RDOQ)
  2. 北航提出基于语言桥接的时空交互来进行准确指向性视频对象分割
  3. 设计分享|基于单片机的计数器设计(汇编)
  4. 分布式轻量级任务调度框架-XXL-JOB(最全面,附带本人实战)
  5. python图像_Python图像处理
  6. palantir_Palantir Technologies有望成为今年最大的IPO
  7. 选择中医 - 养生之道
  8. c++ 统计指定字母开头单词的数量
  9. android 视频通话框架,Android基于腾讯云实时音视频仿微信视频通话最小化悬浮
  10. html css视频播放器,jQuery和CSS 3定制HTML 5视频播放器