Скажем, что мы имеем 3
числа N
, x
и y
, которые всегда >=1
.
N будет больше, чем x
, а y
и x
будет больше, чем y
.
Теперь нам нужно найти сумму всех чисел между 1 и N, которые делятся на x или y.
Я придумал это:
sum = 0;
for(i=1;i<=N;i++)
{
if(i%x || i%y)
sum += i;
}
Есть ли способ лучше найти сумму, избегая цикла for?
Я уже много дней колотил голову, но у меня не было ничего лучшего.
Если значение N
имеет верхний предел, мы можем использовать метод поиска для ускорения процесса.
Спасибо всем.
Мне нужно решение на основе C/С++. Есть ли встроенная функция для этого? Или мне нужно закодировать алгоритм?