Другие языки программирования и технологии

Есть ли простой способ найти несколько последних цифр n-ого числа Фиббоначи?

Console.WriteLine("n число Фибонанчи = ");
int n = Convert.ToInt32(Console.ReadLine());
long fib = 0;
long p1 = 1;
long p2 = 1;// стартовые числа

if (n == 1) fib = 0;
else
{
if (n == 2 || n == 3) fib = 1;// проверка первых чисел
else
{
for (int i = 3; i < n; i++)
{
fib = p1 + p2;
p1 = p2;
p2 = fib;
}
}
}
Console.WriteLine("fib = {0}", fib);

вот как найти n'ое число ...потом его в массив строк и достать последние. Впадлу было писать как но что то типа
Console.WriteLine("Сколько псследних символов из этого числа достать? = ");
int nf = Convert.ToInt32(Console.ReadLine());
string fibStr = fib.ToString();
char[] array = fibStr.ToCharArray(); ;

Console.WriteLine(nf);

for (int i = 0; i < (nf-1); i++)
{
Console.Write(fibStr[array.Length - i]);
}

Console.Read();
второй кусок кода не пашет. что то туплю под вечер.
ЗЫ код на C#
Настя Радыш
Настя Радыш
1 042
Лучший ответ
Если ты не гений, и не изобрел какой нибудь великой теоремы, то существует только один, но очень простой способ: вычислить это число по данному n и затем выдать любые его цифры, ну скажем 2 или 5.
Да! Можно воспользоваться Википедией и выяснить, что период Пизано π(10)=60,т. е последняя цифра в числах повторяется с периодом 60, 2 цифры -300,3цифры -1500.Можно проверить, если составить программу.. .
Выходит, что для любого n предсказать последние цифры, правда вот сколько цифр просто?
Алексей Ушаков
Алексей Ушаков
35 996
Тот же самый перебор, но старшие разряды можно отбрасывать.
Исчезает проблема хранения и обработки больших чисел,
А цель то какая?
Артём
Артём
2 189

Похожие вопросы