Найдите сумму всех чисел от 1 до N, делящихся на x или y

Предположим, у нас есть 3 числа N , x и y , которые всегда равны > = 1 .

N будет больше, чем x и y и x будет больше, чем y .

Теперь нам нужно найти сумму всех чисел от 1 до N, которые делятся либо на x, либо на y .

I придумал следующее:

sum = 0;
for(i=1;i<=N;i++)
{
  if(i%x || i%y)
    sum += i;
}

Есть ли способ лучше найти сумму, избегая цикла for?

I ' я бью себя по голове уже много дней, но ничего лучше не нашел.

Если значение N имеет верхний предел, мы можем использовать метод поиска, чтобы ускорить процесс.

Всем спасибо. .

Я хотел решение на основе C / C ++. Есть ли для этого встроенная функция? Или мне нужно закодировать алгоритм?

11
задан luke 8 May 2012 в 13:32
поделиться