# Sum of all the multiples of 3 or 5 below 1000 gives a wrong answer in C

• A+
Category：Languages

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; } ``