Есть задача:
Вывести простые числа
Натуральное число, большее 1, называется простым, если оно ни на что не делится, кроме себя и 1.
Другими словами, n > 1 – простое, если при его делении на любое число кроме 1 и n есть остаток.
Например, 5 это простое число, оно не может быть разделено без остатка на 2, 3 и 4.
Напишите код, который выводит все простые числа из интервала от 2 до n.
Для n = 10 результат должен быть 2,3,5,7.
P.S. Код также должен легко модифицироваться для любых других интервалов.
Вот решение задачи вложенным циклом FOR
let n = 10;
nextPrime:
for (let i = 2; i <= n; i++) { // Для всех i...
for (let j = 2; j < i; j++) { // проверить, делится ли число..
if (i % j == 0) continue nextPrime; // не подходит, берём следующее
}
alert( i ); // простое число
}
Натуральное число, большее 1, называется простым,
если оно ни на что не делится, кроме себя и 1.
Как я понял, например если взять число 4,
оно не простое, оно делится и на себя и на 1 и на четное 2.
Теперь если глянуть на код как он работает.
1-ая итерация цикла:
Идет проверка на остаток числа 3/2= есть остаток от деления.
Алерт должен вывести 3 а не 2, но почему вывод вначале двйоки произошел?
Ведь i = 3 за первым прогоном после i++ он стал 3
2-ая итерация цикла:
Метка перешла на начало цикла и пошла проверка 4/3?
Объясните, как происходит первая и вторая итерация в этом коде цифрами, что на что делится и как выводится очередность?
Я модернизировал код с кнопкой, для удобности, но как происходит проверка при итерациях не понял.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Тест</title>
<script>
function fanta(){
let rez = one.elements.number.value;
nextPrime:
for(let i = 2; i<=rez; i++){
for( let j = 2; j < i; j++){
if(i%j ==0) continue nextPrime;
}
document.write(i+"<br>");
}
}
</script>
</head>
<body>
<form id="one">
<input type="text" name="number" >
<input type="submit" onClick="fanta()" value="Жми">
</form>
<p id='result'></p>
</body>
</html>