Problem 1.

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

  题目要求找出所有1000以下的3或者5的倍数之和。
  最简便的方法是,计算出1000以下总共有多少个3、5、15的倍数,然后用等差数列求三种数分别之和,最后3、5的倍数和减去15的倍数和就得到了结果。
  NOte:这是因为15的倍数多算了一遍,所以要减去。

Problem 2

Find the sum of all the even-valued terms in the Fibonacci sequence which do not exceed four million.

  题目要求找出斐波那契数列中偶数之和。
  我的方法是,斐波那契数列每三个连续的数中有一个为偶数,计算斐波那契数时用一个长度为3的数据完成缓存,每次循环完成三个数的更新,即计算三次斐波那契数,取偶数位相加即可。
  最简便的方法是,既然没三个连续数就有一个为偶数,那个可以推出连续的三个偶数斐波那契数之间的关系,这样就可以用长度为2的数据完成计算,而且计算量减少很多。

Problem 3

Find the largest prime factor of a composite number

  题目要求找出一个数的最大质因子。
  我的方法是,首先除以所有为2的质因子,然后从3到sqrt(n)依次找出质因子。排序得到最大的,应该用遍历法得到。过程中参考了CSDN的一篇剪枝的方法(回退法除以所有同一个质因子)。

Problem 4

Find the largest palindrome made from the product of two 3-digit numbers.

  题目要求找出能分解为两个三位数相乘的最大回文数。
  我的方法是,判断是否为回文数把每一位都提取出来,看前后是否相等。然后按照因此从999到100遍历啊和b的乘积判断是否为回文数,避免重复。找到第一个回文数后,计算出还有可能的a、b是多少,然后再次遍历。最后对遍历的结果取最大值。
  最简便的方法是,在上述方法的基础上,经过分析知道这个回文数一定是11的倍数,因为11是质数,则a或b必须为质数。在遍历时,可以判断出a不是11的倍数时b的可能值范围变成原来的1/11,运算量大大减少。

Problem 5

What is the smallest number divisible by each of the numbers 1 to 20?

  题目要求找出1~20的最小公倍数。
  我的方法是首先用费马方法实现最大公因子gcd的计算。然后从大到小依次计算前者最小公倍数与下一个数的最小公因子,然后得到所有数的最小公倍数。
  最简单的方法是,对这个公倍数进行分析,必然是小于k的一系列质数的乘积。如果知道质数表,那么对于每一个小于k的质数为底计算floor(log),然后把所有这些质数的幂相乘就得到了最小公倍数。可以优化的一点是,对于大于sqrt(k)的质数,已经不可能为1次以上的幂了,直接设幂指数为1即可。

Problem 6

What is the di erence between the sum of the squares and the square of the sums?

  题目要求算出和的平方与平方和的差。
  我的方法就是直接算,因为没有想到一种方法可以减少运算量。
  最简便的方式,是把求和用高斯的方法计算,即n*(n+1)/2,同样的,最好能得到平方和的计算公式。其实计算方法也很简单,假设为三次多项式,用前四个值(含0)来解出系数。也可以参考百度百科平方和的排列组合法。

Project Euler 001-006 解法总结的更多相关文章

  1. Python练习题 029:Project Euler 001:3和5的倍数

    开始做 Project Euler 的练习题.网站上总共有565题,真是个大题库啊! # Project Euler, Problem 1: Multiples of 3 and 5 # If we ...

  2. Python练习题 034:Project Euler 006:和平方与平方和之差

    本题来自 Project Euler 第6题:https://projecteuler.net/problem=6 # Project Euler: Problem 6: Sum square dif ...

  3. [project euler] program 4

    上一次接触 project euler 还是2011年的事情,做了前三道题,后来被第四题卡住了,前面几题的代码也没有保留下来. 今天试着暴力破解了一下,代码如下: (我大概是第 172,719 个解出 ...

  4. Project Euler 9

    题意:三个正整数a + b + c = 1000,a*a + b*b = c*c.求a*b*c. 解法:可以暴力枚举,但是也有数学方法. 首先,a,b,c中肯定有至少一个为偶数,否则和不可能为以上两个 ...

  5. Python练习题 042:Project Euler 014:最长的考拉兹序列

    本题来自 Project Euler 第14题:https://projecteuler.net/problem=14 ''' Project Euler: Problem 14: Longest C ...

  6. Project Euler 44: Find the smallest pair of pentagonal numbers whose sum and difference is pentagonal.

    In Problem 42 we dealt with triangular problems, in Problem 44 of Project Euler we deal with pentago ...

  7. project euler 169

    project euler 169 题目链接:https://projecteuler.net/problem=169 参考题解:http://tieba.baidu.com/p/2738022069 ...

  8. 【Project Euler 8】Largest product in a series

    题目要求是: The four adjacent digits in the 1000-digit number that have the greatest product are 9 × 9 × ...

  9. Project Euler 第一题效率分析

    Project Euler: 欧拉计划是一系列挑战数学或者计算机编程问题,解决这些问题需要的不仅仅是数学功底. 启动这一项目的目的在于,为乐于探索的人提供一个钻研其他领域并且学习新知识的平台,将这一平 ...

  10. Python练习题 049:Project Euler 022:姓名分值

    本题来自 Project Euler 第22题:https://projecteuler.net/problem=22 ''' Project Euler: Problem 22: Names sco ...

随机推荐

  1. Hibernate lazy(延迟加载)

    Hibernat加载策略有两种,分别为即时加载和延迟加载(懒加载或者lazy),get使用的是即时加载,使用get获取数据时会立即查找(会先去缓存查找,如果缓存中没有找到,才会去数据库中查找),而lo ...

  2. [bzoj3625][Codeforces 250 E]The Child and Binary Tree(生成函数+多项式运算+FFT)

    3625: [Codeforces Round #250]小朋友和二叉树 Time Limit: 40 Sec  Memory Limit: 256 MBSubmit: 650  Solved: 28 ...

  3. 【20181030T1】排列树【树形结构+组合数】

    题面 [正解] 一眼找规律 --**这东西有啥规律啊 哎好像根节点是最小的 好像可以组合数分配子树大小,子树内部-- 可以递归啊! 乱搞一顿就好啦 过了大样例 复杂度\(O(N)\) 切完T2后T3水 ...

  4. 【带修改的主席树】BZOJ1901-Dynamic Rankings

    稍后整理笔记.这题数据范围好像有点问题? #include<iostream> #include<cstdio> #include<cstring> #includ ...

  5. SQL Server 事务复制爬坑记

    SQL Server 复制功能折腾了好几天了,现特将其配置过程以及其间遇到的问题记录下来,以备日后查阅.同时,也让“同道”同学们少走不必要的弯路.如果有不对之处,欢迎大家指正,欢迎沟通交流. 一.复制 ...

  6. Android 出现java.lang.NoClassDefFoundError错误

    项目中用到了Retrofit在android4.4以下版本发生的问题 因为项目的build.gradle文件沿用于一个项目的,在defaultConfig z中已经声明了 multiDexEnable ...

  7. [转]Android学习:EditText的使用方法

        EditText是在Android开发中经常被使用到的控件,主要用来获取用户的输入内容.   1.EditText常用属性   EditText继承自TextView,所以EditText也拥 ...

  8. 笔记本如何查看mac地址

    最近有网友咨询他的笔记本如何查看mac地址,一般情况当我们需要用mac地址,ip地址,本地dns的时候都可以参考下面的方法   MAC地址又称为网卡的物理地址,每台电脑都有一个唯一的MAC地址,也正因 ...

  9. .NET:字符集和编码学习总结

    背景 一直没有深入的学习字符集和编码的知识(现在也没有深入),今天查阅了一些资料,弄明白了一些事情,本文就简单记录一下. 字符集和编码 字符集是指一些符号组成的集合,编码是对指定字符集如何表示为字节的 ...

  10. Mysql 会导致锁表的语法

    最近再找一些Mysql锁表原因,整理出来一部分sql语句会锁表的,方便查阅,整理的不是很全,都是工作中碰到的,会持续更新 笔者能力有限,如果有不正确的,或者不到位的地方,还请大家指出来,方便你我,方便 ...