Проблема, пытаясь расшифровать, является ли число двоюродным братом или нет - Javascript

Я делаю эту программу, чтобы определить, является ли число двоюродным братом или нет. Все работает хорошо, если я ставлю один, он говорит мне, что это не двоюродный брат, если я помещаю 2, он говорит мне, что это двоюродный брат, если я ставлю четное число, он говорит мне, что это не двоюродный брат, если я помещаю число, подобное 21, это говорит мне, что это не двоюродный брат; но когда я ставлю 5 или 7 не появляется console.log, который говорит, что это двоюродный брат

Я проверил код и ничего не могу найти ... Кто-нибудь мне помогает?

var numero = parseInt(promptNum("Introduce un número"));
if (numero <= 1) {
  console.log("número no válido");
}
else if (numero == 2) {
  console.log("es primo y par");
}
else if ((numero % 2 == 0)) {
  console.log("no es primo, pero si divisible entre 2");
} else {
  var primo = true;
  for (var i = 3; i<=Math.sqrt(numero) && primo; i+=2) {
    if (numero%i==0) {
    primo = false;
    }
    if (primo == true) {
    console.log("Es primo"); 
    } else {
    console.log("No es primo");
  }
}
}
0
задан 26.11.2019, 22:38
1 ответ

Как я могу замечать, он показывает тебе совсем не, потому что, когда ты реализуешь Math.sqrt() номера 7, результата 2.6457513110645907, и как в тебе for ты инициализируешь i=3 твое серьезное утверждение в этом 3 < 2.6457513110645907, и как это фальшивые никогда он не войдет.

Однако то, что я сделал бы, состоит в том, чтобы отделять метод, чтобы проверять, первое ли число и возвращать один boolean для того, чтобы, когда число модуль 2 идентифицирует, что его 0, он возвратил один false прямо. Изменяя немного твой код он был бы следующего способа:

var numero = parseInt(promptNum("Introduce un número"));
if (numero <= 1) {
  console.log("número no válido");
}
else if (numero == 2) {
  console.log("es primo y par");
}
else if ((numero % 2 == 0)) {
  console.log("no es primo, pero si divisible entre 2");
} else {
    if (esPrimo(numero) == true) {
      console.log("Es primo"); 
    } else {
      console.log("No es primo");
    }
}
function esPrimo(num) {
    var m=Math.sqrt(num);
    for (var i=2; i<=m; i++) {
        if (num%i==0) {
            return false;
        }
    }
    return true;
}

Надеялся, что он подает тебя ;) Привет

1
ответ дан 01.12.2019, 10:47

Теги

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