Простое число

Недавно были занятия по дискретной математике и как одна из лекций – Простые числа. Очень заинтересовал тот факт, что за За нахождение простого числа из более чем 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
ОСТОРОЖНО! Слишком большие цифры приведут к подвисанию вашего браузера.

Дата: 07.04.2007
Google     

]]> pmaster ]]>

Если уж замахиваться на призовые фонды, так по крупняку! На миллион, который выплатят мужчине, родившему ребенка =)

»

]]> Никита Селецкий ]]>

Миллион? Мало. ))

»

]]> Danaki ]]>

Да, так можно находить простые числа, но если в конце блока if(z === 0) {output = “Это не простое число: ” + x + ” / ” + i + ” = ” + x/i}
поставить break, то браузер зависать больше не будет.

А то что твой скрипт выдает в случае если число не простое — называется наибольший делитель, но в таком случае, его лучше искать с конца :) Проверь, забубень в форму 222222222222222 и подожди, а ответ — число не простое, потому что делится на 2 :)

»

]]> Никита Селецкий ]]>

Тогда лучше сделать нахождение наибольшего и наименьшего общего делителя ))

»

]]> Danaki ]]>

А я уже сделал, пока экспериментировал с твоим кодом :D

»

Напишите комментарий