User
static int fib(int n) { int[] f = new int[2]; f[0] = f[1] = 1; for (int i = 2; i <= n; i++) f[i & 1] += f[!(i & 1)]; return f[!(n & 1)]; } * This source code was highlighted with Source Code Highlighter.
(с) Робоцып
Так ваш код будет быстрее(без деления по модулю)
[/занудство]
Ваш алгоритм работает за O(n)
А описаный в статье за O(lg(n))
Он менее эффективен(целые перемножаются быстрее) и дает неточный ответ, но вспомнить про него надо было.