Всего два возможных исхода: «простое» или «составное».
Случай с составным правильно определяется в варианте, где вы поставили
break
.
Но там не
break
нужен. У вас функция, которая должна вернуть значение. Как только обнаружили, что найден делитель, всё, можно
сразу возвращать результат «Составное число».
Я бы порекомендовал такую логику: в цикле только ловите ахтунг-момент найденного делителя - и сразу возвращайте "Составное". Если же весь цикл отработал и не вылетел из функции, возвращайте "Простое". Не надо никаких «флагов» и доп. переменных. Код получается короткий и понятный.
spoilerfunction testCycle(n) {
for (let i = 2; i < n / 2; i++)
if (n % i === 0)
return "Составное число";
return "Простое число";
}
Примечания:
let
– это то же, что и var
, но действует не в рамках всей функции, а только в рамках блока. В данном случае, внутри цикла.
===
– это «строгое» равенство. То же, что и ==
, но ещё и проверяет, чтобы типы совпадали, т.е. не прокатит "0" === 0
. Зато работает чуть быстрее.
- проверяем не до
n
, а до n / 2
, т. к. целые множители не могут превышать половину произведения (второй множитель не меньше 2)