Skip to content

Instantly share code, notes, and snippets.

@gre
Created August 20, 2010 15:54
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save gre/540584 to your computer and use it in GitHub Desktop.
Save gre/540584 to your computer and use it in GitHub Desktop.
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<style>
body {
color: #333;
background: #EEE;
margin: 30px;
}
h1 {
padding-left: 40px;
}
.number {
font-family: monospace;
font-size: 0.9em;
color: white;
background: #666;
min-width: 50px;
min-height: 50px;
padding: 5px;
}
.number.searching {
background: #44C;
}
.number.prime {
background: #4C4;
}
.number.notPrime {
background: #C44;
}
</style>
<script type="text/javascript">
$(function(){
var MAX_NUMBER = 99;
var randomNumber = function() {
return Math.ceil(Math.random()*MAX_NUMBER);
};
var newNumbers = function(){
$('#numbers .number').each(function(){
var number = randomNumber();
var numberNode = $(this);
numberNode.text(number).attr('class', 'number searching');
var worker = new Worker("primeSolver.js");
worker.onmessage = function(message) {
worker.terminate();
var isPrime = message.data;
numberNode.removeClass('searching').addClass(isPrime ? 'prime' : 'notPrime');
}
worker.postMessage(number);
})
}
$('#randomizeNumbers').click(newNumbers);
});
</script>
</head>
<body>
<p>
<button id="randomizeNumbers">Randomize numbers</button>
</p>
<table id="numbers">
<tr>
<td class="number">
<td class="number">
<td class="number">
</tr>
<tr>
<td class="number">
<td class="number">
<td class="number">
</tr>
<tr>
<td class="number">
<td class="number">
<td class="number">
</tr>
<tr>
<td class="number">
<td class="number">
<td class="number">
</tr>
<tr>
<td class="number">
<td class="number">
<td class="number">
</tr>
<tr>
<td class="number">
<td class="number">
<td class="number">
</tr>
<tr>
<td class="number">
<td class="number">
<td class="number">
</tr>
</table>
</body>
</html>
function findPrimeFactors(number) {
var newNumber = number;
var factors = [];
var checker = 2;
while (checker*checker <= newNumber) {
if (newNumber % checker == 0) {
factors.push(checker);
newNumber /= checker;
}
else
checker++;
}
if (newNumber != 1)
factors.push(newNumber);
return factors;
}
function isPrime(number) {
return (findPrimeFactors(number).length == 1);
}
onmessage = function(message) {
var number = message.data;
var prime = isPrime(number);
postMessage(prime);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment