<!DOCTYPE html> <html lang="en"> <head> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> <title>Prime factors calculator</title> </head> <body> <h1>Prime factors calculator</h1> <table> <tbody> <tr> <th><label for="inputField">Please enter a number:</label></th> <td><input id="inputField" onkeyup="StartCalcPrimeFactors()"></td> </tr> <tr> <th><label for="outputField">The factors are:</label></th> <td><input id="outputField" size="60" disabled="disabled"></td> </tr> </tbody> </table> <h3>Hint:</h3> <p>try 12313123123123 or 12313123123123123123 for long running calculations ! </p> <script type="text/javascript"> var _num = ""; var _timer = null; function StartCalcPrimeFactors() { var inputText = document.getElementById("inputField").value; if (_num != inputText) { if (_timer != null) window.clearTimeout(_timer); document.getElementById("outputField").value = "wait..."; _num = inputText; _timer = window.setTimeout("CalcPrimeFactors()", 300, "javascript"); } // if } // calc prime factors function CalcPrimeFactors() { var inputText, outputText; var prime; // try this factor (only primes will match!) var number; // product of the remaining factors _timer = null; outputText = ""; inputText = document.getElementById("inputField").value; if ((inputText == null) || (inputText.length == 0) || (inputText == "0")) return; prime = 2; // start with 2 number = parseInt(inputText); while ((number > 1) && (prime * prime <= number)) { if (number % prime != 0) { // try the next factor (slowly) prime += 1; } else { // found a factor ! outputText = outputText + " " + prime; number = number / prime; } // if } // while if (number > 1) { // the last factor (a prime) is here. outputText = outputText + " " + number; } document.getElementById("outputField").value = outputText; } // CalcPrimeFactors </script> <hr /> <p>This sample uses HTML and Javascript asynchronously.</p> <p>The long running calculation is not spitted into multiple parts so blocking of the UI still occurs.</p> <p>This page is part of the <a href="http://ajaxaspects.blogspot.com/">http://ajaxaspects.blogspot.com/</a> project.</p> <hr /> </body> </html>
This page is part of the http://www.mathertel.de/ web site.
For updates and discussions see http://ajaxaspects.blogspot.com/.