Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.09.2017, 22:17
Аспирант
Отправить личное сообщение для Jimmi Посмотреть профиль Найти все сообщения от Jimmi
 
Регистрация: 28.02.2014
Сообщений: 53

Вывод простых чисел. Или, что я делаю нетак?
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. Но в результате вижу лишь одну число и то шестерку. Подскажите, что я делаю не так? И как вывести все простые числа?
Ответить с цитированием
  #2 (permalink)  
Старый 01.09.2017, 22:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,111

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>

Последний раз редактировалось рони, 01.09.2017 в 22:54.
Ответить с цитированием
  #3 (permalink)  
Старый 02.09.2017, 10:10
Аспирант
Отправить личное сообщение для Jimmi Посмотреть профиль Найти все сообщения от Jimmi
 
Регистрация: 28.02.2014
Сообщений: 53

Спасибо. А можно узнать? Почему в условии if (i%j) не должно быть нуля?
Ответить с цитированием
  #4 (permalink)  
Старый 02.09.2017, 10:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,111

Jimmi,
если i%j == 0 значит число разделилось без остатка и надо это запомнить в count+=1 ---- если есть остаток, ничего не запоминаем continue, пропускаем запись в счётчик делений count.
простое число делится на себя и 1 - 3 вариант
число может делиться только на себя (пропускаем деление на 1) - 1 вариант.
пропускаем деление на 1 и на себя -- 2 вариант
Ответить с цитированием
  #5 (permalink)  
Старый 02.09.2017, 12:12
Аспирант
Отправить личное сообщение для Jimmi Посмотреть профиль Найти все сообщения от Jimmi
 
Регистрация: 28.02.2014
Сообщений: 53

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

Сообщение от рони
если i%j == 0 значит число разделилось без остатка и надо это запомнить в count+=1
Это то я понимаю. Но почему в примере if (i%j == 0) {continue;} было заменено на if (i%j) {continue;}? И почему именна эта конструкция работает?
Ответить с цитированием
  #6 (permalink)  
Старый 02.09.2017, 13:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,111

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод простых чисел Maine Общие вопросы Javascript 13 28.02.2016 17:57
Сабмит формы или вывод данных lipinart jQuery 2 26.12.2015 13:22
Стоит ли учить JS? Или что то другое? aleks_valery Элементы интерфейса 1 06.08.2010 19:33
Что лучше self.open или window.open ? и почему? alb Events/DOM/Window 3 28.07.2010 20:53
Что лучше, display или visibility? FirstFrost Общие вопросы Javascript 1 21.07.2010 05:42