# Dr. Ehoneah Obed # Write a program in C that prints the first 50 Fibonacci numbers, starting with 1 and 2

To be able to answer this question, you need to understand what a fibonacci number is and how to derive a fibonacci sequence.

A fibnonacci number is any number in a sequence which happens to be the sum of the two preceeding numbers.

This means that the number `n` in a sequence will be expressed as:

``````n = (n-1) + (n-2)
``````

For instance, this question states the numbers (1, 2) we should use to start our fibonacci sequence. This means that our sequence will be something like

``````1
2
1 +2 = 3
3 + 2 = 5
5 + 3 = 8
8 + 5 = 13
``````

This means that if we assign our first two numbers to variables `first` and `second` and declare another variable called `next`, we can go ahead to represent them as.

``````int first = 1;
int second = 2;
int next = first + second;
``````

In the above case, the `next` variable becomes `3`. As soon as we get that one, we need to find what the next one after `3` will be.

Since we are interested in what is after `3`, we will need to reset our `first` and `second` variables. You will realize that to get the number after `3`, our first variable now becomes `2` and the second variable becomes `3`. This gives us:

``````first = 2;
second = 3;
next = first + second;
=> next = 2 + 3;
=> next = 5;
``````

The process will then repeated for the variable `first` to become `3` and `second` become `5`. The `next` variable becomes `8` which is `3 + 5`.

I bet you now know how this works. If you don't, kindly go over it again to understand the steps. We can then go ahead and implement this concept as a C program.

## Coding a C program that prints the first 50 numbers

Below is the code in C program that does exactly what we have discussed about.

``````#include <stdio.h>

/**
* main - main block
* Description: Print the first 50 fibonacci numbers, starting with 1 and 2.
* Numbers must be coma and space separated.
* Return: 0
*/

int main(void)
{
int count = 3; /* this is so because the first 2 members have been given already. My loop will therefore begin from the 3rd one */

long int first = 1, second = 2;
long int next = first + second;

printf("%lu, ", first);
printf("%lu, ", second);

while (count <= 50)
{
/* Let's check if we are at the end of the list, if we are close with a new line */
if (count == 50)
{
printf("%lu \n", next);
}
else  /* if we are not at the end of the list, add a comma after the number */
{
printf("%lu, ", next);
}

/* Reset the variables to get the next number */
first = second;
second = next;

/* after resetting the variables, you need to find the next number */
next = first + second;
count++;
}

return (0);
}
``````

The output of the above code is:

``````1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733, 1134903170, 1836311903, 2971215073, 4807526976, 7778742049, 12586269025, 20365011074
``````

### Conclusion

I hope you enjoyed reading this and it made you understand how to solve a problem like this. I would like to hear back from you. Is there anything I missed, or explained wrongly, or something you want me to elaborate more on?

Share with me what you also think. Mind you, I am also learning and your feedback will be valuable to me.

Thanks for reading and I would love to connect personally with you. If you are on Twitter, then you can send me a DM and let's have a good chat.