Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.06.2017, 04:48
Интересующийся
Отправить личное сообщение для Alexsandr Посмотреть профиль Найти все сообщения от Alexsandr
 
Регистрация: 22.05.2017
Сообщений: 25

Цикл for и изменение переменных
Напишите функцию isPrime. Она принимает число и возвращает true если число является простым, и false в ином случае.

Простое число — целое положительное число, имеющее ровно два различных натуральных делителя — единицу и самого себя. Например, 7 — простое число, потому что делится без остатка только на 1 и на себя. 2017 — другое простое число.

Используйте цикл for и арифметические мутаторы.

isPrime(1); // false
isPrime(7); // true
isPrime(10); // false

1   const isPrime = (num) =>{
2     let num1 = num
3     for(let counter = 2;  num1 !== 0; counter++){
4        num1 %= counter
5               } 
6       if ( counter  === num) {
7       return true;
8     } else {
9       return false;
10    }
11  
12  }
13  isPrime(2);

https://goo.gl/saJZJU в 6 строке пишет что counter не определен

const isPrime = (num) =>{
2        let num1 = num
3        for(let counter = 2;  num1 !== 0; counter++){
4           num1 %= counter
5           let counter1 = counter;
6                  } 
7          if ( counter1  === num) {
8          return true;
9        } else {
10         return false;
11      }
12    
13    }
14    isPrime(2);


пытался добавить переменную counter1 которая копирует counter и вытаскивает значение последнего делителя но все равно пишет что counter1 не определен

const isPrime = (num) =>{
let num1 = num
for(let counter = 2; num1 !== 0; counter++){
num1%= counter
if ( counter === num) {
return true;
}
if (num1 === 0){
return false;
}
}
}

Добавил условия внутрь цикла вроде работает, но проверку не проходит
https://ru.hexlet.io/courses/introdu.../exercise_unit
Run failed! Check and fix errors above!
Ответить с цитированием
  #2 (permalink)  
Старый 08.06.2017, 14:40
Интересующийся
Отправить личное сообщение для Alexsandr Посмотреть профиль Найти все сообщения от Alexsandr
 
Регистрация: 22.05.2017
Сообщений: 25

const isPrime = (num) =>{
if (num === 1 && num === 0){
    return false;
  }   
     let result = 1;
     let counter1 = 1; 
      for(let counter = 2;  result !== 0; counter++){
      result = num % counter;
      counter1 = counter;
  }
  if ( counter1  === num) {
  return true;
  }
    else {
  return false;
}
}

https://goo.gl/X9ZgU5
вроде все работает isPrime(1); // false isPrime(7); // true isPrime(10); // false
но тестер на https://ru.hexlet.io/courses/introdu...unit#community
не пускает говорит что зацикливание
Ответить с цитированием
  #3 (permalink)  
Старый 08.06.2017, 16:25
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

А вы попробуйте без аргументов вызвать функцию!
поставьте значение по умолчанию или
const isPrime = (num = 0) =>{
Ответить с цитированием
  #4 (permalink)  
Старый 08.06.2017, 18:43
Интересующийся
Отправить личное сообщение для Alexsandr Посмотреть профиль Найти все сообщения от Alexsandr
 
Регистрация: 22.05.2017
Сообщений: 25

насчет 0 и 1 есть условие в первой строке возвращать false
Ответить с цитированием
  #5 (permalink)  
Старый 08.06.2017, 19:14
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Вы кажется не поняли, запустите функцию без числа.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как и где задать цикл? Blondinka Events/DOM/Window 2 10.06.2014 15:29
Как подчинить себе цикл wreder jQuery 16 20.11.2013 22:17
Цикл завешивает страницу, помогите Romingood jQuery 5 19.10.2013 14:30
как сделать чтобы цикл не запускался второй раз Brook Events/DOM/Window 5 12.05.2013 21:43
Бесконечный цикл Sundro Общие вопросы Javascript 8 08.08.2011 13:58