/
prob_025.py
71 lines (62 loc) · 3.2 KB
/
prob_025.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/usr/bin/env python
# ============================================================================
import sys
import fibonacci
# ===========================================================================
# = http://projecteuler.net/problem=1 =
# = - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - =
# = Find the first fibonacci number with 1000 digits =
# ===========================================================================
# ----------------------------------------------------------------------------
def getFirstFibNumberWithNDigits(n_digits):
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
itr = 2
last_num = 1
this_num = 1
terminal = int(10**(n_digits-1))
while this_num < terminal:
itr += 1
next_num = fibonacci.nextFib(last_num, this_num)
last_num = this_num
this_num = next_num
print 'The %d Fibonacci number is the first term with %d digits is %d' % (itr, n_digits, this_num)
# ============================================================================
def main():
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
getFirstFibNumberWithNDigits(1)
print '========================================'
getFirstFibNumberWithNDigits(2)
print '========================================'
getFirstFibNumberWithNDigits(3)
print '========================================'
getFirstFibNumberWithNDigits(4)
print '========================================'
getFirstFibNumberWithNDigits(10)
print '========================================'
getFirstFibNumberWithNDigits(100)
print '========================================'
getFirstFibNumberWithNDigits(1000)
print '========================================'
# ============================================================================
if __name__ == "__main__":
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
sys.exit( main() )
# ============================================================================
# ============
# = solution =
# ============
# The 4782 Fibonacci number is the first term with 1000 digits is
# 1070066266382758936764980584457396885083683896632151665013235203375314520604
# 6940406218891475824897926578046948881775919574843364666725699595129960304612
# 6274809248218614406943305123477444275027378175308757939166619214925918675955
# 3966422837148943113074699503439547001985432609723067290192870526447243726117
# 7158218255484911205250132014786129659313817922355596574520395061375514678375
# 4322911960212993404826070617539770684706820289548690266618543512452190036948
# 0641357447470911707619766945691070098024393439617474103736912503231365532164
# 7736970231677550515951735184605799549194109677783732296657965816465139034881
# 5425631018422419025984608800011018625555024549393711365165703944762958471454
# 8523425950428582425306083544435428212611008992863795048006894330309773217834
# 8645431132057656598684562886168087186938352973506439862976406600007235629179
# 0520705116407761481249188583094594056668833910935094445657635766615161931775
# 3792891661581327159616877487983821820492520348473874384736771934512787029218
# 636250627816