プロジェクト

全般

プロフィール

Problem 25 » 履歴 » バージョン 2

Noppi, 2024/01/06 09:37

1 1 Noppi
[ホーム](https://redmine.noppi.jp) - [[Wiki|Project Euler]]
2
# [[Problem 25]]
3
4
## $1000$-digit Fibonacci Number
5
The Fibonacci sequence is defined by the recurrence relation:
6
7
> $F_n = F_{n - 1} + F_{n - 2}$, where $F_1 = 1$ and $F_2 = 1$.
8
9
Hence the first $12$ terms will be:
10
11
<div style="text-align:center">$F_1 = 1$</div>
12
<div style="text-align:center">$F_2 = 1$</div>
13
<div style="text-align:center">$F_3 = 2$</div>
14
<div style="text-align:center">$F_4 = 3$</div>
15
<div style="text-align:center">$F_5 = 5$</div>
16
<div style="text-align:center">$F_6 = 8$</div>
17
<div style="text-align:center">$F_7 = 13$</div>
18
<div style="text-align:center">$F_8 = 21$</div>
19
<div style="text-align:center">$F_9 = 34$</div>
20
<div style="text-align:center">$F_{10} = 55$</div>
21
<div style="text-align:center">$F_{11} = 89$</div>
22
<div style="text-align:center">$F_{12} = 144$</div>
23
24
The $12$th term, $F_{12}$, is the first term to contain three digits.
25
26
What is the index of the first term in the Fibonacci sequence to contain $1000$ digits?
27
28
## 1000桁のフィボナッチ数
29
フィボナッチ数列は以下の漸化式で定義される:
30
31
> $F_n = F_{n - 1} + F_{n - 2}$, ただし $F_1 = 1$ and $F_2 = 1$.
32
33
最初の12項は以下である.
34
35
<div style="text-align:center">$F_1 = 1$</div>
36
<div style="text-align:center">$F_2 = 1$</div>
37
<div style="text-align:center">$F_3 = 2$</div>
38
<div style="text-align:center">$F_4 = 3$</div>
39
<div style="text-align:center">$F_5 = 5$</div>
40
<div style="text-align:center">$F_6 = 8$</div>
41
<div style="text-align:center">$F_7 = 13$</div>
42
<div style="text-align:center">$F_8 = 21$</div>
43
<div style="text-align:center">$F_9 = 34$</div>
44
<div style="text-align:center">$F_{10} = 55$</div>
45
<div style="text-align:center">$F_{11} = 89$</div>
46
<div style="text-align:center">$F_{12} = 144$</div>
47
48
12番目の項, $F_{12}$ が3桁になる最初の項である.
49
50
1000桁になる最初の項の番号を答えよ.
51
52
```scheme
53 2 Noppi
(import (scheme base)
54
        (gauche base)
55
        (scheme list))
56
57
(define fib-generator
58
  (let ([f1 0] [f2 1])
59
    (let ([fib (^[]
60
                 (let ([next (+ f1 f2)])
61
                   (set! f1 f2)
62
                   (set! f2 next)
63
                   next))])
64
      fib)))
65
66
(define fib-list (generator->lseq 0 1 fib-generator))
67
68
(define answer-25
69
  (list-index (^n (<= (expt 10 999) n)) fib-list))
70
71
(format #t "25: ~d~%" answer-25)
72 1 Noppi
```