Lynn «Кофеман», черепашка даже не сильно врет: кодировка iso-8859-1 в рунете традиционно используется как четкий симптом неправильно определенной cp1251 :)
leean, числа, являющиеся квадратом другого числа, очевидно.
У них этот алгоритм при удвоении результата будет давать один лишний множитель, его нужно вычесть.
leean, похоже, оба ответа таки сошлись в один, вам осталось немножко поработать напильником - удвоить результат и вычесть кол-во квадратов в диапазоне.
leean, вы комбинируете два ответа в кучу.
В моем варианте вам нужно просто перебрать все числа. Не только простые. И не выстраивая предварительно решето.
leean, вообще-то тут простота никакой роли и не играет.
Это то же самое решето Эратосфена по диапазону, только с подсчетом выбиваемых ячеек.
После которого больше уже и считать нечего, потому что в задаче только это и требуется.
Кстати, в рассуждениях ошибка: не "каждое второе", а "каждое четное".
В диапазоне от n до m нужно найти крайние числа внутри диапазона, кратные k:
M = m - m % k;
N = n + (k - n % k) % k; // может, можно и проще, но сойдет и так
sum = (M - N) / k + 1; // количество чисел, кратных k, в заданном диапазоне.
Каждое из них дает по 2 делителя так же, как в приведенном в вопросе коде (кроме квадрата, дающего два одинаковых делителя - так что удваиваем результат, но если квадрат k лежит в нужном диапазоне - уменьшаем его на 1).
Складываем эти результаты в цикле от 1 до корня из m - получаем нужный итог.
leean, бумажку. И диапазон от 5 до 36.
Подскажу: на 1 делятся 32 числа, на 2 - 16. Но это просто совпадение.
Кратные 3, 4, 5 и 6 посчитай сам. Сначала - на пальцах, потом, когда дойдет - по формуле.
Вот эта формула в цикле - все, что нужно для решения этой задачи.
leean, берешь бумажку и считаешь, сколько раз в диапазоне от 5 до 12 встречаются числа, кратные 1.
Потом - 2.
Потом - 3.
Если просветление не наступает, берешь диапазон побольше...
leean, я конкретно имел в виду один цикл от 1 до корня из большего числа, для каждого числа в этом цикле проверяется (точнее - вычисляется по элементарно выводимой формуле), сколько в указанном диапазоне кратных ему чисел. Можно начать на простых числах на бумажке, закономерность очевидна.
leean, может, для начала определиться, что ты вообще считаешь? Твой код считает и выводит количество делителей. Хотя в задаче (если она передана без купюр) - сумма.
Lynn «Кофеман», в делители в математике включается и 1, и само число.
У ТС в коде, собственно, выводится только количество, я плясал от этого.
И в коде же само число заносится в сет (при i = 1)