Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вывод простых чисел. Или, что я делаю нетак? (https://javascript.ru/forum/misc/70389-vyvod-prostykh-chisel-ili-chto-ya-delayu-netak.html)

Jimmi 01.09.2017 22:17

Вывод простых чисел. Или, что я делаю нетак?
 
for (var i=2;  i<=10; i++) {
	var count = 0;
	for (var j=2; j<=i; j++) {
		if (i%j == 0) {continue;}
		else count += 1;
	}
	if (count == 2) document.write(i);
}


Выше скрипт, который как я понимаю должен выводить все простые числа имеющиеся в арсенале интервала от 2 до 10. Но в результате вижу лишь одну число и то шестерку. Подскажите, что я делаю не так? И как вывести все простые числа?

рони 01.09.2017 22:51

Jimmi,
<script>
for (var i=2;  i<=10; i++) {
  var count = 0;
  for (var j=2; j<=i; j++) {
    if (i%j) {continue;}
    count += 1;
  }
  if (count == 1) document.write(i);
}


  </script>

<script>
for (var i=2;  i<=10; i++) {
  var count = 0;
  for (var j=2; j<i; j++) {
    if (i%j) {continue;}
    count += 1;
  }
  if (!count) document.write(i);
}


  </script>

<script>
for (var i=2;  i<=10; i++) {
  var count = 0;
  for (var j=1; j<=i; j++) {
    if (i%j) {continue;}
    count += 1;
  }
  if (count == 2) document.write(i);
}


  </script>

Jimmi 02.09.2017 10:10

Спасибо. А можно узнать? Почему в условии if (i%j) не должно быть нуля?

рони 02.09.2017 10:58

Jimmi,
если i%j == 0 значит число разделилось без остатка и надо это запомнить в count+=1 ---- если есть остаток, ничего не запоминаем continue, пропускаем запись в счётчик делений count.
простое число делится на себя и 1 - 3 вариант
число может делиться только на себя (пропускаем деление на 1) - 1 вариант.
пропускаем деление на 1 и на себя -- 2 вариант

Jimmi 02.09.2017 12:12

Ну в данный момент меня интересует именно третий вариант. Работа с типом простых чисел, где простое число делится только на единицу и на себя...

Цитата:

Сообщение от рони
если i%j == 0 значит число разделилось без остатка и надо это запомнить в count+=1

Это то я понимаю. Но почему в примере if (i%j == 0) {continue;} было заменено на if (i%j) {continue;}? И почему именна эта конструкция работает?

рони 02.09.2017 13:10

Jimmi,
if (i%j != 0) {continue;}
тоже самое что
if (i%j) {continue;}

ваше условие было ошибочным --if (i%j == 0) {continue;}


Часовой пояс GMT +3, время: 23:51.