Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Цикл for и изменение переменных (https://javascript.ru/forum/misc/69207-cikl-i-izmenenie-peremennykh.html)

Alexsandr 06.06.2017 04:48

Цикл 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!

Alexsandr 08.06.2017 14:40

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
не пускает говорит что зацикливание

j0hnik 08.06.2017 16:25

А вы попробуйте без аргументов вызвать функцию!
поставьте значение по умолчанию или
const isPrime = (num = 0) =>{

Alexsandr 08.06.2017 18:43

насчет 0 и 1 есть условие в первой строке возвращать false

j0hnik 08.06.2017 19:14

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


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