@dingosss

В чем разница в коде цикла JS?

Есть три почти идентичных цикла, все они выполняют одну функцию, проверяют случайное число в n и возвращает соответственное значение, в случае если n=2 в 1м и 2м случае возвращает все четко, а второй ничего или undefined. Как фигурные скобки могу на это влиять? И почему первые два варианта работаю четко?

//1й способ
function testCycle(n) {
    for (var i=2;i<n;i++)
        if (n%i==0) return "Составное число";
    return "Простое число";
     
}
//2й способ 

function testCycle(n) {
    for (i = 2; i*i <= n; i++)
    if (n % i === 0)
      return "Составное число"; 
  return "Простое число";                                    
    
}

//3й способ
function testCycle(n) {
    for(i=2;i<n;i++){
    if(n%i==o){ return "Составное число";}
        return 'Простое число';
    }
}


UPD: (2й способ) при n=2 i*i<= n почему это равно этому i < n но не равно i<=n, пытаюсь понять и не могу
  • Вопрос задан
  • 136 просмотров
Решения вопроса 1
hzzzzl
@hzzzzl
потому что из-за i < n цикл не выполнится ни разу
function testCycle(n) {
    // n = 2
    for(i=2;i<n;i++){   // 2 < 2 ? false - цикл "выполнен"
      if(n%i==0){ return "Составное число";}
       return 'Простое число';
    }
    // цикл выполнен, код продолжает выполняться здесь
    // возвращаем ничего
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@dingosss Автор вопроса
i*i<= n почему это равно этому i < n но не равно i<=n, пытаюсь понять и не могу
function testCycle(n) {
    for (i = 2; i*i<= n; i++)
    if (n % i == 0)
      return "Составное число"; 
  return "Простое число";                                    
    
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы