- A+

Project Euler problem:

If we list all the natural numbers below

`10`

that are multiples of`3 or 5`

, we get`3, 5, 6 and 9`

. The sum of these multiples is`23`

.Find the sum of all the multiples of

`3 or 5`

below`1000`

.

**My C code:**

`long int x; long int y; long int z = 0; long int a = 0; long int b = 0; for(x= 0; x < 1000; x += 3) a = a + x; for(y = 0; y < 1000; y += 5) b = b + y; z = a + b; printf("%lu", z); return 0; `

But I'm getting `266333`

as the output which is wrong. I checked the answer with Python and I got it right. I would like to know what I'm doing wrong with the C code. The right answer is `233168`

**My Python code:**

`print(sum(x for x in range(1000) if x % 3 == 0 or x % 5 == 0)) `

Some numbers will be divisible by both 3 and 5, you should not add them twice. A code like this will give correct result:

`long int x,total = 0; for(x = 0; x < 1000; ++x) { if(x % 3 == 0) total = total + x; else if(x % 5 == 0) total = total + x; } printf("%ld", total); `

in the code above `if else if`

make sure that if a number is divisible by 3 or by 5. And allow to sum up on this basis.

It can further be optimized to:

`for(x= 0; x < 1000; ++x) { if(x%3 == 0 || x%5 == 0) total = total + x; } `