# c – Nested for loop, run series 10000 times

You have an integer overflow. Look, you define `f` as `int`

`````` int i, f = 1;
``````

and `f` grows fast and became huge, at the end it must have been `(19!)^10000` (a quite big `19!` raised into `10000` power); however, `int` value can not be greater than `2^31 - 1`, and so the integer overflow comes (you can get negative values, then positive one, zero).

When `i == 18`, `j == 1` it appears, that `f == 0` and from now you have

`````` // when i == 18, j = 1 we have f == 0 due to integer overflow
calculation += 1.00 / f;
``````

equals to infinity.

Quick amendment is to declare `f` being `float`:

`````` int i;
float f = 1.0;
``````

The computation is still ineffcient, but the `calculation` is now valid.

``````calculation == 1.7182816
``````

Edit: note, that `f` grows fast, at `j = 2`, `i = 8` we have `f == infinity`. From now on we start doing nothing:

``````1.00 / infinity == 0
``````

and that’s why

``````calculation += 1.00 / f;
``````

equals to

``````calculation += 0;
``````

We can well rewrite

``````// we don't want add 0 9997 times
for(int j=0; j<=10000; j++) ...
``````

into (all we want is at most `4` outer loops instead of `10000`)

``````for(int j=0; j<=3; j++) ...
``````