Az 73318332000987272. Fibonacci szám tényleg "123456789"-cel kezdődik és végződik?
Tehát F(73318332000987272) = 123456789......123456789 ?
Persze sok-sok számjegy van közte.
Alapötlet javítva, hogy keressünk egy gyorsabb algoritmust Google-lel:
Mivel itt is lehet minden műveletet moduló 10^9 csinálni, ezért szerintem ezzel meglesz.
Igen, ez jó, köszi!
Megcsináltam pythonban:
fi=[0,1,1,2,3,5,8,13,21,34,55,89]
def fibo(n,m): # F(n) mod m
if n<12: return fi[n]%m
s=bin(n)
s=s[2:]
h=len(s)
k=n>>(h-3)
k0=fi[k-1]%m
k1=fi[k]%m
for i in range(3,len(s)):
k0,k1 = (k0**2+k1**2)%m, ((k0*2+k1)*k1)%m
if s[i]=='1': k0,k1 = k1,(k1+k0)%m
return k1
fibo(73318332000987272,10**18)
232975576123456789
(A mp töredéke alatt kiszámolta)
Akkor lemaradtam… Gyakrabban kéne programoznom. Meg nem kellett volna leülnöm közben a TV elé…
Az én megvalósításom C-ben:
#include <stdio.h>
#define MOD 1000000000
#define LOG 64
#define SZAM 73318332000987272
typedef struct {
int a;
int b;
int c;
} matrix;
matrix szor(matrix x, matrix y)
{
long long a, b, c;
matrix z;
z.a = ((long long)x.a*(long long)y.a + (long long)x.b*(long long)y.b)%MOD;
z.b = ((long long)x.a*(long long)y.b + (long long)x.b*(long long)y.c)%MOD;
z.c = ((long long)x.b*(long long)y.b + (long long)x.c*(long long)y.c)%MOD;
return z;
}
matrix hatvany(matrix x, long long n)
{
matrix a[LOG], h;
int i;
a[0] = x;
for(i=0;i<LOG-1;i++) a[i+1] = szor(a[i], a[i]);
h.a = 1; h.c = 1; h.b = 0;
i = 0;
while(n)
{if(n%2) h = szor(h, a[i]);
n /= 2; i++;}
return h;
}
int main()
{
long long n=SZAM;
matrix e, k;
e.a = 1; e.b = 1; e.c = 0;
k = hatvany(e, n);
printf("%d\n%d\n%d\n",k.a,k.b,k.c);
return 0;
}
Az OUTPUT:
871709218
123456789
748252429
Process returned 0 (0x0) execution time : 0.024 s
Press any key to continue.
A második szám az Fn mod 10^9.
Köszi!
Na ugye? (Hitetlenkedőknek.) :D
Még pár furcsa Fibonacci szám:
F(609915142373778322)= 111 111 111 ...... 111 111 111
F(17229997747499999998)= 999 999 999 ...... 999 999 999
F(6761232252640178)= 3141592653589793...... (pi kezdetű)
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!