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
最后
以上就是灵巧鸵鸟最近收集整理的关于
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复