let flag = false
let num = 8
for ( let i = 2; i
JavaScript
Chto tyt ne tak?
Почему после исстины в for break не останавливает перебор цикла? Или дело не в этом?
const isPrime = (x) => {
let p;
if (x === 1) p = false;
else if (x === 2) p = true;
else if (0 === x % 2) p = false;
else if (x < 6) p = true;
else if (0 === x % 3 || 0 === x % 5) p = false;
else {
let n;
for (n = 3; n * n x;
}
return p;
};
const program = () => {
let num;
while (true) {
let str = prompt("Введите целое положительное число");
if (str == null) break;
num = Number.parseFloat(str);
if (isNaN(num)) {
console.log("Ошибка: не число!");
} else {
if (Number.isInteger(num) && num >= 0) {
console.log(isPrime(num) ? "число простое" : "число составное");
} else {
if (!Number.isInteger(num)) {
console.log("Ошибка: не целое число!");
}
if (num < 0) {
console.log("Ошибка: отрицательное число!");
}
}
}
}
};
program();
- flag == true заменено на flag = true. Для присваивания значения переменной используется оператор =, а не оператор сравнения ==.
- В цикле проверки делителей число i изменено на Math.sqrt(num), чтобы уменьшить количество итераций. Достаточно проверить делители до квадратного корня числа, чтобы определить, является ли оно составным или простым.
- Добавлена точка с запятой после каждого выражения.
let flag = false;
let num = 8;
for (let i = 2; i
Ваш код не работает, потому что в строке flag == true вы используете оператор сравнения == вместо оператора присваивания =.
Так как тебе уже дали ответ, дам тебе ещё совет. Нет смысла делить 8 на числа вплоть до 1000. Всё что выше 8 даст тебе число меньше 1.
8 / 9 = 0.889...
8 / 10 = 0.8
8 / 11 = 0.73...
И так далее.
8 / 9 = 0.889...
8 / 10 = 0.8
8 / 11 = 0.73...
И так далее.
let flag = false
let num = 8
for (let i = 2; i
Вместо if ( flag === true ) пишется if (flag)
Твою ошибку сергио написал
Твою ошибку сергио написал
В этом коде после первого условия if ( num % i === 0) происходит присваивание переменной flag значения true, затем происходит выход из цикла с помощью команды break.
После выхода из цикла переменная flag остается равной true, поэтому в условии if ( flag === true) всегда будет true и функция console.log будет выводить сообщение “число составное”.
Если вы хотите, чтобы цикл останавливался при первом же найденном составном числе, нужно добавить еще одно условие if:
if (num % i === 0 && flag === false) { flag = true; break; }
После выхода из цикла переменная flag остается равной true, поэтому в условии if ( flag === true) всегда будет true и функция console.log будет выводить сообщение “число составное”.
Если вы хотите, чтобы цикл останавливался при первом же найденном составном числе, нужно добавить еще одно условие if:
if (num % i === 0 && flag === false) { flag = true; break; }
V K
Ерунду написали.
Мало того что не заметили явную ошибку, так и ещё код предоставили который ни на что не влияет и результат даёт идентичный (если не учитывать ошибку).
Мало того что не заметили явную ошибку, так и ещё код предоставили который ни на что не влияет и результат даёт идентичный (если не учитывать ошибку).
Похожие вопросы
- Mne ne hvataet vnimanija ljudej. Chto so mnoj sejchas ne tak???
- vo vremja beremennosti mozno kak to ponjatj cto s rebjonkom vnutri ctoto ne tak?-esli on vnutri umrjot etoi budet kakto
- Po4emu tak grustno?Vrode bi vse ne tak uj i ploxo,no....
- rock eto ved ne muzika, a eto OTSTOJ!!!Ne tak li Gangsters_Rappers???
- ...nas mojno zamenit - ne priyatno dumat , ne tak li ?..
- Kakuju sobaku vibrat ja ne znaju vse xorosie , dobrie , silnie. A KTO IZ NIX DOBREE I NE TAK SILNO LINJAET
- ya hochu rebenka ne poluchaetsya chto delat. ne znaeteli vi narodnie lechenie?
- qovoryat ya xoroshiy chelovek, sam znayu chto ploxoy muj, tak stoit 3-iy raz jenitsa?..
- komu nravitsia odevatsia ne tak kak vse?
- cego vam nado,muziki?muz menia brosil sdvumia detmi...cto ia ne tak sdelala?
У меня всё именно так и случается. А вот так: Вроде всё работает правильно