我是靠谱客的博主 灵巧鸵鸟,这篇文章主要介绍Project Euler NO57,现在分享给大家,希望可以做个参考。

2的平方根可以被表示为无限延伸的分数:

√ 2 = 1 + 1/(2 + 1/(2 + 1/(2 + ... ))) = 1.414213...

将其前四次迭代展开,我们得到:

1 + 1/2 = 3/2 = 1.5
1 + 1/(2 + 1/2) = 7/5 = 1.4
1 + 1/(2 + 1/(2 + 1/2)) = 17/12 = 1.41666...
1 + 1/(2 + 1/(2 + 1/(2 + 1/2))) = 41/29 = 1.41379...

接下来三次迭代的展开是99/70, 239/169, and 577/408, 但是第八次迭代的展开, 1393/985, 是第一个分子的位数超过分母的位数的例子。

在前1000次迭代的展开中,有多少个的分子位数超过分母位数?


import java.math.BigInteger;
public class Problem57
{
public static void main(String[] args)
{
long start = System.currentTimeMillis();
System.out.print("answer:
");
howmany();
long end = System.currentTimeMillis();
System.out.print("time:
");
System.out.println(end - start);
}
static void howmany()
{
int sum = 0;
//不能用
int,不然越界~~
BigInteger array[] = {BigInteger.ONE,BigInteger.valueOf(2)};
for (int i = 1; i < 1000; i++)
{
array = jisuan(array, i);
BigInteger zi = array[0].add( array[1] );
if ( (zi + "").length() > (array[1] + "").length() )
{
sum++;
}
}
System.out.println(sum);
}
static BigInteger [] jisuan(BigInteger array[], int n)
{
BigInteger t = array[1];
array[1] = array[1].multiply(BigInteger.valueOf(2)).add( array[0] );
array[0] = t;
return array;
}
}



answer:  153
time:  221



最后

以上就是灵巧鸵鸟最近收集整理的关于Project Euler NO57的全部内容,更多相关Project内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部