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. BZOJ4552 HEOI2016排序

    太棒了!思路很不错. 没想到HEOID1三道线段树. 这题我们可以二分答案,将小于他的在线段树中设成0,大于他的设成1然后模拟操作复杂度O(mlog^2n) By:大奕哥 #include<bi ...

  2. Codeforces 1103 C. Johnny Solving

    Codeforces 1103 C. Johnny Solving 题目大意: 有一张 \(n\) 个点 \(m\) 条边的简单无向图,每个点的度数至少为 \(3\) ,你需要构造出两种情况之一 一条 ...

  3. [NOIP2017]列队(线段树/裂点splay)

    考虑n=1的做法,就是支持: 1.在线删一个数 2.在结尾加一个数 3.查询序列的第y个数 用线段树记录区间内被删元素的个数,可以通过线段树上二分快速得解,对于新增的数,用vector记录即可. 对于 ...

  4. bzoj 2693

    收获: 1.积性函数的积也是积性函数,基本的积性函数:常数函数,正比例函数,欧拉函数,Mobius函数,积性函数一般都知道表达式,所以一般都可以在线性筛时搞定. 2.遇到整除求和时,这个东西就已经是最 ...

  5. Codeforces Beta Round #6 (Div. 2 Only) A. Triangle 水题

    A. Triangle 题目连接: http://codeforces.com/contest/6/problem/A Description Johnny has a younger sister ...

  6. Codeforces Round #301 (Div. 2) C. Ice Cave BFS

    C. Ice Cave Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/540/problem/C ...

  7. 读书笔记_Effective_C++_条款二十九:为“异常安全”而努力是值得的

    还是举书上的例子: void PrettyMenu::changeBackground(std::istream& imgSrc) { lock(&mutex); delete bgI ...

  8. mybatis源码分析(3)-----SqlSessionHolder作用

    1. sqlSessionHolder 是位于mybatis-spring 包下面,他的作用是对于sqlSession和事务的控制 sqlSessionHolder 继承了spring的Resourc ...

  9. Windows用WinDbg分析蓝屏dump文件查找原因(转)

    WinDbg官方下载: http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.11.1.404.msi http://msdl. ...

  10. serial-input, parallel-output (SIPO) chip : TPIC6595 , 74HC164 , 74HC4094 or 74HC595

    http://electronics.stackexchange.com/questions/6676/which-sipo-chip-is-better-74hc4094-or-74hc595-or ...