随笔分类 - projectEuler.net
[projectEuler.net]27
摘要:题目网站来自中文project euler欧拉曾发表过一个著名的二次公式:n² +n+ 41这个公式对于0到39的连续数字能够产生40个质数。但是当n= 40时,402+ 40 + 41 = 40(40 + 1) + 41能够被41整除。当n= 41时, 41² + 41 + 41显然也能被41整除。利用计算机,人们发现了一个惊人的公式:n²79n+ 1601。这个公式对于n= 0 到 79能够产生80个质数。这个公式的系数,79 和1601的乘积是126479。考虑如下形式的二次公式:n² +an+b, 其中|a|1000, |b|1000其中|n|
阅读全文
[projectEuler.net]24;26
摘要:P24找出0 1 2 3 4 5 6 7 8 9 字典顺序的第100万个排序不需要编程,因为是字典顺序,以最新的0 开头的排列是有9!种,1开头的排列有9!种。2开头的也是9!。01开头的共有七十几万种,加上2的超过了100万。所以开头是2。使用这个规则可以全部定位顺序。P26module P26 where--findCycleSize 找出小数的循环位的位数--t为中间求模过程,如果有后续的计算有相同的,那么就是可以结束了。--http://zh.wikipedia.org/wiki/%E5%BE%AA%E7%8E%AF%E5%B0%8F%E6%95%B0findCycleSize ::
阅读全文
[ProjectEuler.net] 25 找到第一个fib数,数位为1000位
摘要:利用公式还有mathematica 然后手动的找到第一个10的999次方的数。因此第4782个菲波那契数是第一个数位个数为1000的菲波那契数
阅读全文
[ProjectEuler.net] 14
摘要:n按照下面的规则产生的序列:nn/2 (nis even)n3n+ 1 (nis odd)比如13:134020105168421求在100万以下的数中,哪个数产出的序列最长。产出的序列中会包含很多以前计算过的,所以要缓存起来,以下使用了字典。要注意的是当一个数很大的时候,如果是奇数,那么下一个数可能会超出类型的最大值。所以以下F#就用int64了其实下面代码是haskell直接转型过来的,唉,haskell怎么写才快起来呢..let isEven (n:int64) = n % 2L = 0Llet next n= match isEven n with | true ->...
阅读全文
[projectEuler.net]12
摘要:求一个数的因子的数量。X=a^n*b^m*c^p will have (n + 1)(m + 1)(p + 1) factors.//abc都是质因子28=2^2*7 will have 3*2 = 6 factors 因为:28的质因子是 2 2 7;28的所有因子必是由这些质因子构成;构造这些因子时:2可以取 0 、1、 2 个。7可以取0 、1 个;所以28因子的数量是:3×2=6 。http://mathforum.org/library/drmath/view/55843.htmlhttp://www.cnblogs.com/zhouyinhui/archive/2011/
阅读全文
[projectEuler.net] 11
摘要:In the 2020 grid below, four numbers along a diagonal line have been marked in red.08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 0849 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 0081 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 6552 70 95 23 04 60 11 42 69 24 68 56 01 3
阅读全文
[projectEuler.net] 10
摘要:Sieve of Eratosthenesis a simple, ancientalgorithmfor finding allprime numbersup to any given limit.///SieveofEratosthenes///http://upload.wikimedia.org/wikipedia/commons/b/b9/Sieve_of_Eratosthenes_animation.gif///内部使用byte数组存放标志位,所以不适合非常大的素数范围。视内存限制。letPrimesBelowSOEx=letmutableret=[]letflagarr=Arr.
阅读全文
[projecteuler.net] 5;6;9
摘要:5欧几里德求最小公约数法f#实现:///Euclideanalgorithm///http://en.wikipedia.org/wiki/Euclidean_algorithm///求AB的最大公约数///使用辗转相减法///原始的欧几里算法是:///设C为最大公约数///A=aCB=bC///gcd(A,B)=>gcd(A-B,B)[a>b]及gcd((a-b)C,B)不断的用大的减去小的。直到a-b=1那么就得到C了letrecgcdab=matchawith|xwhenx=0I->b|_->gcd(b%a)a有了最小公约数最小公倍数就简单了letlcmab=a*
阅读全文
浙公网安备 33010602011771号