
练练手-projecteuler
文章平均质量分 54
zhou_zhihao
这个作者很懒,什么都没留下…
展开
-
问题25-Fibonacci数列第一个长度超过1000的数的下标
nt getNumberByLength(int n) { int term = 0; BigDecimal f1 = new BigDecimal(1); BigDecimal f0 = new BigDecimal(0); BigDecimal fn = new BigDecimal(0); for (int i = 2; fn.toString().length() < n; i++) { fn = f1.add(f0); term = i;原创 2010-12-02 23:12:29 · 192 阅读 · 0 评论 -
问题5-求能被1到20所整除的最小的数
2010-11-23 13:14:00 · 121 阅读 · 0 评论 -
问题6-求1到100的和平方与平方和的差值
,求1到100的和平方与平方和之间的差值?” 代码实现如下:/** * 求前n个自然数和平方与平方和之差 * @param n * @return */ private static int getDifference(int n) { int first = 0; int second = 0; for (int i = 1; i <= n; i++) { first += i * i; second += i2010-11-23 13:37:00 · 217 阅读 · 0 评论 -
问题7-求第10001个质数
imeNumberBy(int n) { int j = 1; int i = 1; int result = 0; while (j < n) { if (AlgorithmUtil.isPrimeNumber(i)) { result = i; j++; } i += 2; } return result; } 下面是判断质数的代码:/** * 判断是否是素数 *2010-11-23 13:56:00 · 155 阅读 · 0 评论 -
问题8-对于1000位数值求出连续五位数值的最大乘积
225119674426574742355349194934 96983520312774506326239578318016984801869478851843 85861560789112949495459501737958331952853208805511 12540698747158523863050715693290963295227443043557 6689664895044524452316173185640309872010-11-23 15:21:00 · 157 阅读 · 0 评论 -
问题9-求毕达哥拉斯三元数组{a,b,c},使得a+b+c=1000,给出a*b*c
。” 代码如下:/** * 求毕达哥拉斯三元数组{a,b,c},使得a+b+c=target . 毕达哥拉斯三元数组存在{a,b,c},a<b<c,使得a^2+b^2=c^2 * a > 3,(target-(a+b))^2=c^2=a^2+b^2 --> target^2=2*target*(a+b)-2ab * * @return */ private static int getNumber2010-11-23 17:09:00 · 248 阅读 · 0 评论 -
问题10-求小于2000000的质数之和
2010-11-23 17:22:00 · 147 阅读 · 0 评论 -
问题11-求给出20*20数组的任何方向四个数相乘的最大值
98 43 69 48 04 56 62 00 81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65 52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91 22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80 24 47 32 602010-11-24 16:03:00 · 125 阅读 · 0 评论 -
问题4-求两个三位数乘积的最大回文数
原创 2010-11-20 22:36:36 · 248 阅读 · 0 评论 -
问题3-600851475143的最大质因数
给出代码如下: private static Long getTheLargestPrimeFactor(Long n) { Long returnFactor = 1L; for (Long factor = 2L; n > 1; factor++) { if (n % factor == 0) { n /= factor; returnFactor = factor; while (n % factor == 0) {原创 2010-11-20 14:17:50 · 391 阅读 · 0 评论 -
问题2-Fibonacci sequence中400w以下的偶数之和
之和为2+8,如果是89以下的偶数之和为2+8+34,以此类推 Fibonacci sequence的由来就不详细介绍了,有兴趣可以去了解。 其基本概念如下: n=0,f(0)=0; n=1,f(1)=1; n=2,f(2)=f(1)+f(0)=1; n,f(n)=f(n-1)+f(n-2)(n>=2); 问题实现代码如下: public static int getSum(int limit) { int sum = 0; int原创 2010-11-19 13:54:19 · 137 阅读 · 0 评论 -
问题12-求因子个数超过500个的第一个三角数
,3 6:1,2,3,6 10:1,2,5,10 15:1,3,5,15 21:1,3,7,21 28:1,2,4,7,14,28 因子个数超过5的第一个三角数为28,求因子个数超过500个的第一个三角数?” 代码实现如下: /** * 获得n的因子的个数 * * @param n * @return */ private static int getFactorNumber(int triangleNumber) {原创 2010-11-25 10:57:43 · 139 阅读 · 0 评论 -
问题13-求100个50位数之和的前10位数字
4324986199524741059474233309513058123726617309629919422133635741615725224305633018110724061549082502306758820753934617117198031042104751377806324667689261670696623633820136378418383684178734361726757281128798128499794080654819315926216912758898327384427422原创 2010-11-25 17:33:51 · 133 阅读 · 0 评论 -
问题14-找到最长的一个数列当开始的数小于1000000.
->16->8->4->2->1 所以从13开始的数列长度为10。所有的数列都结束于1。 求开始数在1000000以下的数列长度最长的开始数。” 代码如下:/** * n n/2 (n 是偶数) n 3n + 1 (n 是奇数) * * @param n * @return */ private static Long getNumber(int n) { Long ma原创 2010-11-25 22:53:29 · 106 阅读 · 0 评论 -
问题24-给出集合{0,1,2,3,4,5,6,7,8,9}的全排列从小到大的第1000000个的值
原创 2010-12-01 22:42:18 · 265 阅读 · 0 评论 -
问题23-所有不能被两个盈数相加的正整数之和
icient number),如果比真因子相加还小,那就称之为盈数(abundant number)。 12是最小的盈数,1+2+3+4+6=16>12.最小的两个盈数相加的正整数是14,我们可以知道大于28123的正整数都可以被两个盈数相加得到。 求不能被两个盈数相加的正整数之和?” 代码实现如下: /** * n的真因子之和 * * @param n * @return */ private static int sumOfFa原创 2010-12-01 22:33:28 · 456 阅读 · 0 评论 -
问题22-文件name.txt中所有名字得分的总和是多少?
原创 2010-11-30 23:14:38 · 131 阅读 · 0 评论 -
问题21-10000以下的亲和数之和
1和142,所 以d(284)=220,所以220和284是亲和数. 求10000以下的亲和数之和?” 代码实现如下: /** * n范围内亲和数之和 */ private static int sum(int n) { int sum = 0; int a = 0; int b = 0; for (int i = 1; i < n; i++) { a = i; b = sumOfFactors(a); i原创 2010-11-30 23:03:58 · 416 阅读 · 0 评论 -
问题20-求100!的各位数字之和
Long result = n; for (Long i = n - 1; i > 1; i--) { result *= i; } return result; } 由于超出100!的范围,使用BigDecimal,代码如下:/** * n! * * @param n * @return */ private static String factorial(Long n) { BigDe原创 2010-11-29 22:39:51 · 151 阅读 · 0 评论 -
问题19-20世纪(1901-1-1到2000-12-31)有多少月的第一天是星期天
原创 2010-11-29 22:34:01 · 217 阅读 · 0 评论 -
问题18-求三角从顶到底的最大值
原创 2010-11-28 23:20:15 · 111 阅读 · 0 评论 -
问题17-从1到1000的单词中有多少字母?
空格及连字符。例如,342(three hundred and forty-two)有23个字母和115(one hundred and fifteen)有20个字母,在英国人的使用习惯中,‘and’在写数字中是必不可少的。” 代码实现如下:/** * 字母总数 * @return */ private static int getSum() { int sum = 0; for (int i = 1; i <= 1000; i++) {原创 2010-11-28 23:08:40 · 236 阅读 · 0 评论 -
问题16-求2的1000次方的各个数字之和
1000次方,所以用BigInteger * @param n * @return */ private static int getSum(int a,int b){ int sum = 0; String s = new BigInteger(a+"").pow(b).toString(); for (int i = 0; i < s.length(); i++) { sum+=Integer.parseInt(s.cha原创 2010-11-26 13:30:37 · 342 阅读 · 0 评论 -
问题15-求n*n的网格,从左上角到右下角有多少线路
原创 2010-11-26 13:08:27 · 231 阅读 · 0 评论 -
问题1-1000以下的3,5倍数之和
原创 2010-11-19 10:36:44 · 227 阅读 · 0 评论 -
问题25-Fibonacci数列第一个长度超过1000的数的下标
问题描述如下: “Fibonacci数列第一个长度超过3的f12=144,其下标为12,求Fibonacci数列第一个长度超过1000的数的下标?” 贴代码: private static int getNumberByLength(int n) { int term = 0; BigDecimal f1 = new BigDecimal(1); BigDec...原创 2010-12-02 23:12:29 · 348 阅读 · 0 评论 -
问题11-求给出20*20数组的任何方向四个数相乘的最大值
问题描述如下: “一个20*20的数组如下所示 08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 81 49 31 73 55 79 14 ...2010-11-24 16:03:00 · 421 阅读 · 0 评论 -
问题10-求小于2000000的质数之和
问题描述如下: “10以下的质数之和为2+3+5+7=17,求2000000以下的质数之和?” 此问题相对比较简单,在前面的问题中已经给出质数判断的方法,具体代码如下: /** * 判断是否是素数 * * @param n * @return */ public static boolean isPrimeNumber(int...2010-11-23 17:22:00 · 220 阅读 · 0 评论 -
问题9-求毕达哥拉斯三元数组{a,b,c},使得a+b+c=1000,给出a*b*c
问题描述如下: “毕达哥拉斯三元数组存在{a,b,c},a<b<c,使得a^2+b^2=c^2,如3^2+4^2=5^2=25,求a,b,c满足以上条件,并使a+b+c=1000,给出a*b*c的值。” 代码如下:/** * 求毕达哥拉斯三元数组{a,b,c},使得a+b+c=target . 毕达哥拉斯三元数组存在{a,b,c},a<...2010-11-23 17:09:00 · 417 阅读 · 0 评论 -
问题8-对于1000位数值求出连续五位数值的最大乘积
问题描述如下: “对于1000位数值求出连续五位数值的最大乘积,1000位连续数值如下: 73167176531330624919225119674426574742355349194934 96983520312774506326239578318016984801869478851843 8...2010-11-23 15:21:00 · 115 阅读 · 0 评论 -
问题7-求第10001个质数
问题描述如下: “前6个质数为:2,3,5,7,11,13,那第6个质数为13,求第10001个质数。” 代码如下: private static int getPrimeNumberBy(int n) { int j = 1; int i = 1; int result = 0; while (j < n) { i...2010-11-23 13:56:00 · 736 阅读 · 0 评论 -
问题6-求1到100的和平方与平方和的差值
问题描述如下: “1到10的平方和为:1^2 + 2^2 + ... + 10^2 = 385,和平方为:(1 + 2 + ... + 10)^2 = 55^2 = 3025,他们之间的差为3025-385=2640,求1到100的和平方与平方和之间的差值?” 代码实现如下:/** * 求前n个自然数和平方与平方和之差 * @param n...2010-11-23 13:37:00 · 404 阅读 · 0 评论 -
问题5-求能被1到20所整除的最小的数
问题叙述如下: “2520是最小的数能够整除1到10,求能被1到20所整除的最小的数?” 代码如下: /** * 数字i从m到n,遍历,如果i不能被result整除,我们就将i除以i与result的最大公约数,并与当前result想乘 * */ private static int getNumber(int m, int n) { int...2010-11-23 13:14:00 · 389 阅读 · 0 评论 -
问题4-求两个三位数乘积的最大回文数
问题描述如下: “回文数从两边读值是一样的。两个两位数乘积的最大回文数是9009=99*99,求两个三位数乘积的最大回文数?” 那么我们很快就可以得到实现代码,如下: private static Long getPalindromicNumber() { Long max = 0L; for (Long i = 100L; i <= 999; i++...原创 2010-11-20 22:36:36 · 712 阅读 · 0 评论 -
问题3-600851475143的最大质因数
问题描述如下: “13195的质因数(或者叫素因子,素因素)为5,7,13和29,求600851475143的最大质因数是多少?” 这里质因数的概念就不赘述了。 给出代码如下: private static Long getTheLargestPrimeFactor(Long n) { Long returnFactor = 1L; for (Lon...原创 2010-11-20 14:17:50 · 510 阅读 · 0 评论 -
问题2-Fibonacci sequence中400w以下的偶数之和
问题描述如下: “Fibonacci 数列n>=2的前10个数如下: 1,2,3,5,8,13,21,34,55,89...求Fibonacci sequence中400w以下的偶数之和” 注意:如果是10以下的偶数之和为2+8,如果是89以下的偶数之和为2+8+34,以此类推 Fibonacci sequence的由来就不详细介绍了,有兴趣可以去了解。...原创 2010-11-19 13:54:19 · 148 阅读 · 0 评论 -
问题12-求因子个数超过500个的第一个三角数
问题描述如下: “三角数为符合如下标准: 第7个数为1+2+3+4+...+7=28,前几个三角数为:1,,3,6,10,15,21,28...... 让我们来看一下他们的因子: 1:1 3:1,3 6:1,2,3,6 10:1,2,5,10 15:1,3,5,15 21:1,3,7,21 28:1,2,4,7,14,28 因子...原创 2010-11-25 10:57:43 · 170 阅读 · 0 评论 -
问题13-求100个50位数之和的前10位数字
这个问题比较bt问题描述如下: “求以下100个50位数之和的前10位数字37107287533902102798797998220837590246510135740250463769376774900097126481248969700780504170182605387432498619952474105947423330951305812372661730962991942...原创 2010-11-25 17:33:51 · 307 阅读 · 0 评论 -
问题14-找到最长的一个数列当开始的数小于1000000.
问题具体描述如下: “数列定义是这样的: n:n/2(n是偶数的时候) n:3n+1(n是奇数的时候) 当开始的数是13时,数列如下所示 13->40->20->10->5->16->8->4->2->1 所以从13开始的数列长度为10。所有的数列都结束于1。 求开始数在1000000以下的数列长度最长的开始数。...原创 2010-11-25 22:53:29 · 143 阅读 · 0 评论 -
问题24-给出集合{0,1,2,3,4,5,6,7,8,9}的全排列从小到大的第1000000个的值
问题描述如下: “1,2,3的全排列是123 132 213 231 312 321,其全排列第3个的值为213,求{0,1,2,3,4,5,6,7,8,9}的全排列的第1000000个的值?” 我们可以知道{0,1,2,3,4,5,6,7,8,9}的全排列有10!个,如果要给出所有的全排列,那么昨天所说的Jhonson Trotter算法是比较高效的。在文章最后会给出其代码,有兴趣...原创 2010-12-01 22:42:18 · 250 阅读 · 0 评论