Найти первые k чисел Люка - C (СИ)
Формулировка задачи:
Ребят , помогите такая прога :Числа Люка определяются так: первое число равно 1, второе равно 3,
каждое следующее равно сумме двух предыдущих. Составить программу,
которая находит первые k чисел Люка (k – задается пользователем).
Определить номер последнего числа Люка, которое входит в диапазон
типа int (long int). Вывести в виде таблицы данное число Люка и три
предыдущих с их номерами. Написал код ,но он работает только для первых 4 чисел , дальше не считает , в чем ошибка ?
#include<stdio.h> #include<limits.h> #include <locale.h> int main() { setlocale(LC_ALL,""); int a,b,c,a1,a2,a3,a4,i,k; printf("введи колличество членов люка\n"); scanf("%d",&k); printf("k=%d\n",k); a1=1; a2=3; for(i=3;i<=k;i++) {if (i=3) {a3=a1+a2;} if (i=4) {a4=a2+a3;} if ((i>4)&&((INT_MAX-a3)>=a4)) { a=a2; b=a3; c=a4; a1=a; a2=b; a3=c; a4=b+c;} else {break;} } printf("a%d=%d\n",i,a4); printf("a%d=%d\n",i-1,a3); printf("a%d=%d\n",i-2,a2); printf("a%d=%d\n",i-3,a1); return 0; }
Решение задачи: «Найти первые k чисел Люка»
textual
Листинг программы
a1 = 1; a2 = 3; a3 = a1 + a2; a4 = a2 + a3; for (i = 3; i <= k; ++i) { a1 = a2; a2 = a3; a3 = a4; a4 = a2 + a3; }
Объяснение кода листинга программы
В данном коде выполняется вычисление первых k чисел Люка. Список вычислений можно описать следующим образом:
- Начинаем с чисел a1 = 1 и a2 = 3.
- Вычисляем первое число a3 = a1 + a2, то есть 1 + 3 = 4.
- Вычисляем второе число a4 = a2 + a3, то есть 3 + 4 = 7.
- Затем, в цикле от i = 3 до i <= k, выполняем следующие действия:
- Присваиваем a1 значение a2.
- Присваиваем a2 значение a3.
- Присваиваем a3 значение a4.
- Вычисляем новое значение a4 = a2 + a3, то есть 2 + 7 = 9.
- Повторяем шаги 4 для всех i от 4 до k. Таким образом, после выполнения цикла, в переменной a4 будет содержаться k-е число Люка.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д