не могу понять как работает javascript

Обсуждение вопросов клиентского программирования.

Модератор: Duncon

Ответить
golferum
Сообщения: 3
Зарегистрирован: 02 авг 2013, 00:13

02 авг 2013, 02:41

<script>
nextPrime:
for(var i=2; i<10; i++) {

for(var j=2; j<i; j++) {
if ( i % j == 0) continue nextPrime; // КАК ЭТО УСЛОВИЕ НЕ ПРОПУСКАЕТ ЧЕТВЕРКУ
}

alert(i); // простое
}

</script>

скрипт создан, чтобы выводить простые числа из диапозона 2..10, но не могу понять как он работает, ведь условие выполняется, 4%2 == 0? как он ее отсеевает?
golferum
Сообщения: 3
Зарегистрирован: 02 авг 2013, 00:13

02 авг 2013, 02:50

Аа, догнал, метка закрывает весь цикл вместе с alert, поэтому не выводит... Хитро сделано, я просто задачу в инэте нашел, решил я ее подругому, а именно вот так
<script>
var i,j,cop;

for (i = 2; i<30; i++)
{
cop=0;
for (j = 1; j<30; j++)
{if (i%j == 0) {cop++}};
if (cop == 2) {alert(i); continue} else continue;
};

</script>
использую переменную как копилку, чтобы подсчитывать количество делений числа, если не равно двум, то оно не простое, потому что простое делится только на себя или 1. Это плохой стиль программирования?))
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

02 авг 2013, 11:56

Цикл совершенно спокойно можно начинать с двух: for (j=2; j<i; j++)
И проверять на if (cop==1). Потому что на единицу и так любое число делится.
Хотя в таком раскладе можно обойтись и без этого cop
{ if (i%j==0) continue;
alert (i);
}
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить