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. nyoj 737 石子合并 http://blog.csdn.net/wangdan11111/article/details/45032519

    http://blog.csdn.net/wangdan11111/article/details/45032519 http://acm.nyist.net/JudgeOnline/problem. ...

  2. PHP代码重用

    代码重用 include() 和require() 都是载入文件 include()如果载入的文件不存在,提示警告错误,程序还可以继续执行 require()如果载入的文件不存在,致命性错误,程序终止 ...

  3. 51nod 1412 AVL树的种类

    非常简单的一道题,一眼题 枚举左儿子大小,再枚举深度即可 复杂度$O(n^2 log n)$ #include <cstdio> #include <cstring> #inc ...

  4. Parse要垮了

    一清早收到邮件就睡不着了... 花了那么多时间熟悉api,第一个基于parse的app也要做完了... 看来国内的类似产品也不敢用了,还是老老实实用阿里云自己写backend吧...

  5. poj 2001 trie

    第一道trie 还需要写题来建立自己的代码习惯. #include <cstdio> #include <vector> #include <algorithm> ...

  6. iOS Contact框架功能研究

    兄弟们,直接复制,感谢度娘,感谢谷哥!!! 1.读取联系人通讯录 /** *  读取联系人通讯录 */ -(NSMutableArray*)getContactList{ NSMutableArray ...

  7. 将DLL挂接到远程进程之中(远程注入)

    线程的远程注入 要实现线程的远程注入必须使用Windows提供的CreateRemoteThread函数来创建一个远程线程该函数的原型如下:HANDLE CreateRemoteThread(    ...

  8. ssl 复制

    http://www.ttlsa.com/mysql/mysql-replication-base-on-ssl/ http://www.tuicool.com/articles/mi2iaq htt ...

  9. printf回到上一行开头以及回到本行开头的方法

    回到上一行开头 #include <stdio.h> #include <unistd.h> int main(void) { ; ){ printf("%d\n&q ...

  10. What is the fastest way of (not) logging?

    原文地址:http://www.slf4j.org/faq.html#logging_performance SLF4J supports an advanced feature called par ...