【Project Euler 1】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.

这个题目提供两种方法来计算。

方法一:采用最笨拙的方式,直接从1到1000,每一个数都去看看是否可以被3或者5整除。Java实现代码如下:

1 public static long getSum(int number) {
2         long sum = 0;
3         for (int i = 1; i < number; i++) {
4             if (i % 3 == 0 || i % 5 == 0) {
5                 sum += i;
6             }
7         }
8         return sum;
9     }

方法一

方法二:利用求和公式,我们知道1000之内被3整数的最大数,应该是999/3=333,所以所有可以被3整除的数的总和应该是3*(1+2+...+333)=3*(333+334)/2 { 求和公式为:1+2+...+n=n*(n+1)/2 },同理,所有可以被5整数的数的总和是5*(1+2+...+199)=5*(199+200)/2,但是这里还有一个问题,就是那些既能被3,又能被5整除的数(也就是能被15整除的数),被计算了两次,因此需要再减去一次所有能被15整除的数。Java实现代码如下:

1 public static long getSumBetter(int number){
2         /* (1+2+...+333)*3+(1+2+...+199)*5-(1+2+..+66)*15 */
3         int num = number - 1;
4         return  ((num / 3) * (num / 3 + 1) * 3) / 2 + ((num / 5) * (num / 5 + 1) * 5) / 2 - ((num / 15) * (num / 15 + 1) * 15 / 2);
5     }

方法二

时间: 2024-10-13 14:10:10

【Project Euler 1】Multiples of 3 and 5的相关文章

【Project Euler】530 GCD of Divisors 莫比乌斯反演

[题目]GCD of Divisors [题意]给定f(n)=Σd|n gcd(d,n/d)的前缀和F(n),n=10^15. [算法]莫比乌斯反演 [题解]参考:任之洲数论函数.pdf 这个范围显然杜教筛也是做不了的,而且考虑直接化简f(n)也遇到了困难,所以考虑将前缀和的Σ一起化简. $$F(n)=\sum_{i=1}^{n}\sum_{d|i}(d,\frac{i}{d})$$ 这一步很常见的是第一重改为枚举倍数,但这样化简后面就推不下去了. 这道题必须最后转成$\sigma_0(n)$才

创建一个Eclipse项目【Create a Project with Eclipse】

最近一个问题很困扰我,今天则得到了答案,也意味着我该选择了. 不知道大家有没有遇到过这样的情况,我是上年刚毕业,大四时进行过java培训,12年9月-13年4月,在这之前已经自学过java.7月份时进入一家公司工作,今年3月份辞职,4月份找到工作,来上班了.一开始就不太喜欢公司氛围,前台,hr,态度什么的都不太好,工作环境也极像客服部,整天电话不断,讨论声不断,第一个星期真是煎熬,去了两三天之后有辞职的想法,但是后面想想还是算了,公司待遇还可以. 但是进入到公司后leader让学PHP,学PHP

【Unity3D游戏开发】—— 太空大战打飞机游戏详解

大家好我是Kaven,今天给大家带来的是一个Unity3D的打飞机的小项目.俗话说"眼看千变,不如手过一边",学了差不多两星期Unity3D了,是时候找个小项目练练手了.于是就翻出了cocos2d-x的一个例子,模仿着写了一个飞机大战的游戏,虽然有一些功能没有实现,但总体上是完成了.闲话少说,下面开始吧. 由于这个用的是Unity3d自带的原生的2D插件native 2d,所以创建项目时左下角选择2d. 这个小游戏我分了三个场景,菜单场景,游戏场景,结束场景.由于菜单场景与结束场景都比

【Android开发-2】每一次的Hello World,都是一次冒险和成长

前言:从大学开始,自己才算真正接触电脑:自己第一台电脑是组装机2500左右,组件都是自己从百度搜的,然后去电子城买了相关组件,记得当时没钱,都是挑性价比比较高的组件,显示器AOC,主板技嘉,CPU是酷睿双核,具体型号没记住,希捷硬盘320G,电源跟主机箱都是老板推荐最便宜的,没显卡.自从拥有了第一台电脑,当然当时是比较兴奋的,但好像不像当初刚买时的愿望是拿来学习的,结果是拿来看片,打拳皇了.到大学第二年,才意识到要学点东西了,电脑才走上正途.对于计算机编程,每学习一门语言,最经常看到的例子就是H

【喵&quot;的Android之路】【番外篇】有关于null的一些知识点

[喵"的Android之路][番外篇]有关于null的一些知识点 1.首先,到底什么是null? null是Java中的一个关键字,用于表示一个空对象引用,但其本身并不是任何类型也不是属于任何对象.因此,下面的做法是错误的: int a = null; 但: Object obj = null; 是可以的,因为null表示Object类型的一个空对象引用,符合其用意. [注1]引用类型使用null声明对象变量后,无法使用该变量访问对象的成员.例如上述obj对象如果使用obj.toString()

【vim环境配置】详细实录

[写在前面] 以下的所有内容主要参照: https://github.com/yangyangwithgnu/use_vim_as_ide . 原blog作者写的非常用心,建议大家都去看看.(个人觉得通过这个blog大大提升了学习vim配置环境的效率,因此给作者捐了顿外卖的钱)这个随笔就是学习上述blog内容的辅助记录,并不能代替学习原著:把学习过程中遇到的一些坑列出来,初步做一下知识沉淀. 以前我个人的学习理念是“重剑无锋.大巧不工”,瞧不上这些快捷键之类的“奇技淫巧”.但是,打磨完了vim的

【创新培育项目】为什么要组队參加比赛?及如何寻找一个合适的选题?

眼下学校正在进行创新项目培育,截止日期为5月30日,QQ群(324168309).在和学生接触中发现,学生中存在一些认识方面的误区,主要表现例如以下. (1)这是高年级学生的事. (2)这是班上其它同学的事. (3)我没有创新想法,算了. (4)想參加,问过几个同学组队都没有兴趣,算了. (5)这个想法已经有人做过,唉,算了. (6)团队组建好了,一看预算要3000元,太贵算了. -- 从上面比較典型的问题能够看出,同学们主要纠结在 能力.团队.资金 三个方面.如同创业一样,主要三大限制因素各自

【Unity3D游戏开发】—— 导入网上下载的.unitypackage包

这两天遇到了这样一个问题,网上下载的别人导出的.unitypackage包.如果双击打开,则会出现"Failed importing package "的错误. 为此很头疼,查了一些资料,需要将.unitypackage包复制到Editor\Standard Packages文件夹下, 然后ctrl+9打开 Asset Store, 点击下载然后找到刚刚复制的包名,点击Import导入即可. 还有一种方法类似,将.unitypackage包复制到Editor\Standard Pack

Python开发【第二十一篇】:Web框架之Django【基础】

Python开发[第二十一篇]:Web框架之Django[基础] 猛击这里:http://www.cnblogs.com/wupeiqi/articles/5237704.html Python之路[第十六篇]:Django[基础篇] Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. 基本配置 一.创建django程序 终端命令:django-a