## Problem statement

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.

## Thoughts

This can easily be solved without any loops.

## Solution

As we want values below 1000, we use limit 999

int limit = 999;


There exists the following equation for summing natural numbers up to

int getSumNats(int limit)
{
return limit * (limit + 1) / 2;
}


Consider the following

We can recognise, therefore, that we can determine the sum of multiples of by setting , and multiplying by

So to calculate the sum of the multiples of 3 and 5 under 1000 we need to:

• Add the sum of the multiples of 3

• Add the sum of the multiples of 5

• Subtract the sum of the multiples of 15 (to avoid counting them twice)

#include <stdio.h>
int main()
{
int sum_multiples_of_3 = 3 * getSumNats(limit / 3);
int sum_multiples_of_5 = 5 * getSumNats(limit / 5);
int sum_multiples_of_15 = 15 * getSumNats(limit / 15);

printf("%d\n",
sum_multiples_of_3 + sum_multiples_of_5 - sum_multiples_of_15);
}