найти простое число
Добрый день. Нужно получить рандомное число и узнать простое ли оно.
getRandomNumber();
function getRandomNumber(){
var x=parseInt(Math.random()*20);
console.log(x);
for (var i=2;i<x;i++){
var j=1;
if(x>2 && x%j==0 && x%i!==0){
var number=x+" простое";
}else{
var number=x +" Err";
}
}
document.write('<br>'+number)
Ошибка в if. Выдает все числа простыми, но не могу понять в чем ошибка. |
getRandomNumber();
function getRandomNumber(){
var x=parseInt(Math.random()*20),
res=true;
for (var i=2;i<x;i++){
if(x<=1 || x%i==0){
res=false;
break;
}
};
var number=(x>1 && res)?x+" простое":x +" Err";
alert(number);
};
|
var number=(x>1 && res)?x+" простое":x +" Err";
alert(number);
эта часть слишком сложна для моего уровня, можно все это написать развернуто и пошагово,чтоб я понял.И что делает промежуточная (res).Заранее спасибо |
var number=(x>1 && res)?x+" простое":x +" Err"; аналогично
if(x>1 && res) {
number=x+" простое";
}
else {
number = x +" Err";
} |
Спасибо Большое
|
:write: зачем проверять лишнее ...
for (var i=2;i<=Math.sqrt(x);i++){
|
Я как-то так делала
function calculateDividersCount(input) { document.getElementById('para').innerHTML = ''; var count = 0; for (var i = 0; i <= input; i++) { if (input % i == 0) { count++; } } return count; } function myFunction(input) { var result = ""; for (var i = 0; i <= input; i++) { if (calculateDividersCount(i) == 2) { result += i; result += ','; result += ' '; } } return result.substring(0, result.length-2); } function displayDividersCount(){ var userInput = parseInt(document.getElementById('from').value); document.getElementById('para').innerHTML = myFunction(userInput) + ''; } |
Бипач,
Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
Цитата:
|
Цитата:
я бы ещё слегка ускорил
function isPrime(num) {
if (num < 2 || num % 2 === 0) return false;
for (var i = 3, sqrt = Math.sqrt(x); i <= sqrt; i += 2) {
if (num % i === 0) return false;
}
return true;
}
|
RuBrain,
предположим число 9, нет смысла искать делитель больше 3, три это корень из 9, максимальный делитель числа - это его квадратный корень! |
Alexandroppolus, откуда x на строке №3? Разве число 2 — составное?
function isPrime(num) {
if(
num < 2 ||
num > 2 && num % 2 === 0 ||
num > 3 && num % 3 === 0 ||
num > 6 && (num - 1) % 6 !== 0 && (num + 1) % 6 !== 0
) return false;
for(var i = 6, sqrt = 1 + Math.sqrt(num); i <= sqrt; i += 6)
if(num % (i - 1) === 0 || num % (i + 1) === 0) return false;
return true;
}
|
| Часовой пояс GMT +3, время: 20:20. |