Fibonacci Conjecture
January 23, 2015
We test primality using the Miller-Rabin algorithm:
from random import randint
def isPrime(n, k=5): # miller-rabin
if n < 2: return False
for p in [2,3,5,7,11,13,17,19,23,29]:
if n % p == 0: return n == p
s, d = 0, n-1
while d % 2 == 0:
s, d = s+1, d/2
for i in range(k):
x = pow(randint(2, n-1), d, n)
if x == 1 or x == n-1: continue
for r in range(1, s):
x = (x * x) % n
if x == 1: return False
if x == n-1: break
else: return False
return True
Then we generate the fibonacci sequence item by item, testing each member of the sequence for the conjecture:
fminus2, fminus1, f, n = 0, 1, 1, 1
while not isPrime(f*f+41):
fminus2 = fminus1
fminus1 = f
f = fminus2 + fminus1
n = n + 1
print n
It takes a while, but when n = 12586 the conjecture is disproved; Fn =
2437420528658316261009349390793966957742064\
3628861129205119104129367296544863664132318\
7350629550946523694153755521722137479950927\
2904723884962366758282082558958533077607016\
4703846370983386287796589758104627824352090\
5662005007112216576623475679256710071871042\
3501925305429172597994769639007117036154468\
7180679967509632642871862665093652981386467\
8910317854243133922877435406205076602327076\
9741103525885355233426517035556242651050139\
7776152157485442589142262270805545603989018\
2738554122228622158431371645352398507835723\
0385583847730548224182907279173376294450080\
9559053247797188570862253302394816309497146\
6878325147926036684128681457928096551878450\
9048663514751789277765677734737548105702983\
9734854764440251783035033215144047874666733\
6848868926251340058764754077781140566043315\
8701933074493040543009488664637360050636904\
2928079603209789838364413285025609380384265\
6795053352943252616137226071900435738575737\
1979845493254607828392109996976472074994766\
9033598594913864908202612667104449679242977\
8610516507362889175957975232663636222152077\
4284526382848518239624979685302202912236641\
6943769232769303904917019647139581084704832\
7272516266180237248581730637609553420348612\
0484912018032012452608038735409013648590994\
8240242575154900347260104409588725662982761\
8930795229966774742603711212498750506258076\
3014931449402618392241302765309360591836332\
5458917719554093037261461679173796989091018\
2435816239415372148826244578310525764913283\
5242405725134042227992345138785534218377273\
5053838856017355194609598851478158802143512\
7175941347773542411307602896674709526451628\
6476071607991857431689522947614987960169330\
6722813421495472939532252545388730790498301\
2251572189695241349427758764490786113582769\
8645909666431556968864724496839492828557311\
9170002013318196219345226290957660638411642\
0016581274984591009084728165483905358516182\
0297135028779916414354206794185844039364018\
8608957647160096027031880341964822877335354\
5751715205632025400536873014390149732416863\
9085890424786551710413554658241864854000794\
6745670650479244297452105370763155766676763\
7318438261153992762039335049099708136846624\
8277001806713678125062905001779238666279561\
6632647722206547535282413463861123144939517\
6474406575548095847232978261553672514077110\
1662200616963869051516130934571518303860888\
9635879329162191473644658218460874561795754\
7161483044610603455086191314143678151570447\
9169448264328530870952452811943101857223733\
6743709285893930610721261923392743649444251\
2593507974839519719984251378323935971154303\
0401762641878184079758301800088653799694925\
1691510246396397638712811252669104365214937\
6779473254356292498767183110896869322621345\
2857548409354754231404289782181584228127633\
62455056
I’m writing in Python instead of Scheme because I happened to have a Python window open, with an isPrime
function already loaded, when I saw the conjecture. That takes a while to run because the numbers quickly become large.
This is a good example of a conjecture that seems to be true; it takes a long time to find a counter-example (with 2630 digits!) so it fools you into thinking that it might be correct. There are other famous conjectures — the Collatz conjecture, the twin-primes conjecture, the conjecture that all perfect numbers are even, the Riemann hypothesis — for which there is strong empirical evidence but no proof.
You can run the program at http://programmingpraxis.codepad.org/Q4e8Xt8V.
Quick and dirty brute-force method in python. Copy and pasted the isprime function, made a fibb generator, and started testing for anomalies.
Detected 2^2 + 41 as the odd one out:
NEVER MIND, IGNORE MY PREVIOUS COMMENT, NOT THE SOLUTION.
I am truly a poop.
Fails for F_0, as 41 is prime.
I think that according to the definition in the question the value of n in the model solution is off by 2.
For that definition, the initialisation line would be
i took 1 as first fibonacci number and run my code in several ranges as my machine lets me.
it seems conjecture is true. though if it is not, i will not be surprised.
[…] (source) […]
[…] (source) […]