найти простое число
Добрый день. Нужно получить рандомное число и узнать простое ли оно.
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, время: 03:59. |