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)
На кой хрен принудительные обратные слеши? Винды уже давно одумались и умеют в прямые.
Подозреваю, под виндами с их зоопарком кодировок file_exist просто не находит файл с именем кириллицей по той строчке, которая у вас в коде. И пустой $_FILES прилетает потому, что пустым и улетает.
Собрать поля из одной таблицы. По полученным айдишникам выбрать данные из второй, третьей и т.п.
Просто не надо пытаться слепить это все в один запрос.
zeroname, ну, я-то перед ответом посмотрел на форму обратной связи у себя на битриксовском сайте, и ответ написан как раз по той логике, как оно там работает последние 15 лет.
Нет, за это время отнюдь не стало легче посылать левые письма, скорее наоборот.
zeroname, это, на самом деле, распространенная ошибка новичков о форме обратной связи, например.
Они почему-то уверены, что письмо из нее должно приходить от имени того, кто заполнил форму.
Тогда как на самом деле письмо приходит от вашего же сайта с данными, указанными в форме.
zeroname, это все совершенно перпендикулярно тому факту, что, если я смастрячу даже сам себе письмо, в котором в заголовках FROM будет стоять какой-то левый адрес, мой же провайдер не даст мне доставить самому себе такое письмо. И я сильно подозреваю, что у вас аналогично, поэтому неверна сама постановка задачи.
А уж если вы тупо поставите в битриксовском шаблоне в поле "Адрес отправителя" не свой адрес - вы этим просто сломаете отправку, и больше ничего.
Но учесть, что каждый раз получается два множителя, кроме случаев n <= i*i <= m.