Найти первые 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-е число Люка.