Простое число
Недавно были занятия по дискретной математике и как одна из лекций – Простые числа. Очень заинтересовал тот факт, что за За нахождение простого числа из более чем 107 десятичных цифр EFF назначила награду в 100000 долларов США.
Хотите заработать? Я быстренько накатал скриптик на JS который проверяет является ли число простым. Но скриптик не универсален. Вводите число и методом перебора от 2 до корня из этого числа проверяется деление на остаток.
В будущем нужно будет попробовать что-то типа теста Люка – Лемера
Здесь код:
<a name="simple"></a>
<form action="#simple" method="GET" onsubmit="Simple(document.getElementById('input').value); return false">
<input type="text" id="input" />
<input type="submit" value="Проверить" />
</form>
<script>
function Simple(x){
var y = Math.sqrt(x)
var result = document.getElementById('result')
var output = "", z
var d1 = new Date()
var stamp1 = d1.getTime()
for(i=2; i<=y; i++){
z = x%i
if(z === 0){
output = "Это не простое число: " + x + " / " + i + " = " + x/i
}
}
var d2 = new Date()
var stamp2 = d2.getTime()
if(output != "") result.innerHTML = output
else result.innerHTML = "Это простое число"
result.innerHTML += "<br />Время затраченное на выполнение проверки: " + (stamp2-stamp1) + " ms"
}
</script>
<div id="result"></div>
Здесь работающий скрипт: NS Simple test
ОСТОРОЖНО! Слишком большие цифры приведут к подвисанию вашего браузера.





]]>pmaster]]>Если уж замахиваться на призовые фонды, так по крупняку! На миллион, который выплатят мужчине, родившему ребенка =)
»]]>Никита Селецкий]]>Миллион? Мало. ))
»]]>Danaki]]>Да, так можно находить простые числа, но если в конце блока if(z === 0) {output = “Это не простое число: ” + x + ” / ” + i + ” = ” + x/i}
поставить break, то браузер зависать больше не будет.
А то что твой скрипт выдает в случае если число не простое — называется наибольший делитель, но в таком случае, его лучше искать с конца
Проверь, забубень в форму 222222222222222 и подожди, а ответ — число не простое, потому что делится на 2
»]]>Никита Селецкий]]>Тогда лучше сделать нахождение наибольшего и наименьшего общего делителя ))
»]]>Danaki]]>А я уже сделал, пока экспериментировал с твоим кодом
»