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. property staticmathod classmethod 反射

    使用@property 在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改: s = Student() s.score = 9999 这显然不合逻 ...

  2. HDU2874【倍增、ST】

    题目链接[https://vjudge.net/problem/HDU-2874] 题意: 输入一个森林,总节点不超过N(N<10000),由C次询问(C<1000000),每次询问两个点 ...

  3. Hash表及hash算法的分析

    Hash表中的一些原理/概念,及根据这些原理/概念: 一.       Hash表概念 二.       Hash构造函数的方法,及适用范围 三.       Hash处理冲突方法,各自特征 四.   ...

  4. HDU 5293 Annoying problem 树形dp dfs序 树状数组 lca

    Annoying problem 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5293 Description Coco has a tree, w ...

  5. <摘录>CentOS6.5下添加epel源

    0.安装yum优先级插件 yum install yum-priorities 1.epel简介: https://fedoraproject.org/wiki/EPEL/zh-cn rpm -Uvh ...

  6. HDU 4705 Y (2013多校10,1010题,简单树形DP)

    Y Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submiss ...

  7. Create a DAC from a microcontroller's ADC

    Few microcontrollers include a DAC. Although you can easily find an inexpensive DAC to control from ...

  8. Debian 安装记录

    1.蓝色标注是安装的部分或配置的.  作者:http://www.cppblog.com/jinglexy上海体育馆   2.linux 发行版测评网站:www.distrowatch.com   打 ...

  9. KVM-Introduce

    相信非常多的人对虚拟机并不陌生,眼下也有非常多优秀的虚拟机软件,比如:VMware, VirtualBox, Xen, KVM等.而本文的主要内容是介绍KVM. KVM: Kernel Based V ...

  10. 利用AS3的ByteArray解析SWF的尺寸

    AS3的ByteArray可以用来操作二进制.使用它,我们就获取加载进来的SWF的尺寸. 首先要了解下SWF的文件结构,可以下载官方的PDF看下. 用UltraEdit32打开一个SWF,会看到第一个 ...