알고리즘,손코딩 문제

프로젝트 오일러 문제 25 : 피보나치 수열에서 값이 처음으로 1000자리가 되는 것은 몇번째 항입니까?

알통몬_ 2017. 3. 11. 20:08
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 

피보나치 수열은 아래처럼 점화식으로 정의되는데요.

Fn = Fn-1 + Fn-2  (단, F1 = 1, F2 = 1).

이에 따라 수열을 12번째 항까지 차례대로 계산하면 다음과 같아요.

F1 = 1
F2 = 1
F3 = 2
F4 = 3
F5 = 5
F6 = 8
F7 = 13
F8 = 21
F9 = 34
F10 = 55
F11 = 89
F12 = 144

수열의 값은 F12에서 처음으로 3자리가 됩니다.

피보나치 수열에서 값이 처음으로 1000자리가 되는 것은 몇번째 항입니까?



public class Question {

public static void main(String[] args) {

BigInteger a = new BigInteger("1");

BigInteger b = new BigInteger("1");

BigInteger sum = new BigInteger("2");

int count = 2;

BigInteger bi = new BigInteger("10");

for(int i=1;i<=1000;i++){

bi = bi.multiply(bi.valueOf(10));

}

while (sum.compareTo(bi)<0) {

count++;

sum = a.add(b);

a = b;

b = sum;

}

System.out.println(sum + "-" + count);

}

 

}

반응형