25 1000-digit Fibonacci number - Project Euler
2015-11-01 22:55
399 查看
package xxx.xxx.xxx;
import java.math.BigInteger;
/*
* The Fibonacci sequence is defined by the recurrence relation:
* Fn = Fn−1 + Fn−2, where F1 = 1 and F2 = 1.
* Hence the first 12 terms will be:
* F1 = 1
* F2 = 1
* F3 = 2
* F4 = 3
* F5 = 5
* F6 = 8
* F7 = 13
* F8 = 21
* F9 = 34
* F10 = 55
* F11 = 89
* F12 = 144
* The 12th term, F12, is the first term to contain three digits.
* What is the index of the first term in the Fibonacci sequence to contain 1000 digits?
*/
public class OneThousandDigitFibonacciNumber {
private void compute(){
BigInteger last = BigInteger.ONE;
BigInteger current = BigInteger.ONE;
BigInteger next = BigInteger.ZERO;
BigInteger count = BigInteger.valueOf(2);
while(next.toString().length()<1000){
count = count.add(BigInteger.valueOf(1));
next = last.add(current);
last = current;
current = next;
}
System.out.println(count);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
long startTime = System.currentTimeMillis();
OneThousandDigitFibonacciNumber test = new OneThousandDigitFibonacciNumber();
test.compute();
long endTime = System.currentTimeMillis();
System.out.println("execution time "+(endTime-startTime +"ms"));
}
}
import java.math.BigInteger;
/*
* The Fibonacci sequence is defined by the recurrence relation:
* Fn = Fn−1 + Fn−2, where F1 = 1 and F2 = 1.
* Hence the first 12 terms will be:
* F1 = 1
* F2 = 1
* F3 = 2
* F4 = 3
* F5 = 5
* F6 = 8
* F7 = 13
* F8 = 21
* F9 = 34
* F10 = 55
* F11 = 89
* F12 = 144
* The 12th term, F12, is the first term to contain three digits.
* What is the index of the first term in the Fibonacci sequence to contain 1000 digits?
*/
public class OneThousandDigitFibonacciNumber {
private void compute(){
BigInteger last = BigInteger.ONE;
BigInteger current = BigInteger.ONE;
BigInteger next = BigInteger.ZERO;
BigInteger count = BigInteger.valueOf(2);
while(next.toString().length()<1000){
count = count.add(BigInteger.valueOf(1));
next = last.add(current);
last = current;
current = next;
}
System.out.println(count);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
long startTime = System.currentTimeMillis();
OneThousandDigitFibonacciNumber test = new OneThousandDigitFibonacciNumber();
test.compute();
long endTime = System.currentTimeMillis();
System.out.println("execution time "+(endTime-startTime +"ms"));
}
}
相关文章推荐
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法
- 基于C++实现的各种内部排序算法汇总
- C++线性时间的排序算法分析
- C++实现汉诺塔算法经典实例
- PHP实现克鲁斯卡尔算法实例解析
- C#获取关键字附近文字算法实例