117b. Find the prime factorization of number.
Invoke function using 1 argument.
1st arg (number) ... The number to factorized, can accept any integer (positive, negative, zero).
| function( | |
| n, // input number. | |
| // placeholder. | |
| i, // latest divisor. | |
| r // array of result. | |
| ){ | |
| r=[]; // create an empty array. | |
| if(n<0){ // check if n is negative number. | |
| n=-n; // if n is negative, set it to positive. | |
| r[0]=-1} // and set its 1st factor as -1. | |
| for(i=2; // set divisor to 2. | |
| i<=n;i++) // loop through all i <= n. | |
| if(n%i==0){ // check if i is a divisor of n? | |
| r.push(i); // if i is a divisor, save it to r. | |
| n/=i--} // set new n and reset i for loop back. | |
| r[0]=n? // on exit loop (only n==0|n==1 to exit loop), check if n==0? | |
| r[0]? // if n!=0, check if some factor does exist? | |
| r[0]: // if there already some factor, do nothing. | |
| 1: // if there are no any factor, set it to 1 (and only). | |
| 0; // if n==0, set the factor to 0 (and only). | |
| return r // return the result. | |
| } |
| function(n,i,r){r=[];if(n<0){n=-n;r[0]=-1}for(i=2;i<=n;i++)if(n%i==0){r.push(i);n/=i--}r[0]=n?r[0]?r[0]:1:0;return r} |
| DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE | |
| Version 2, December 2004 | |
| Copyright (C) 2011 Nattawut Phetmak <http://about.me/neizod> | |
| Everyone is permitted to copy and distribute verbatim or modified | |
| copies of this license document, and changing it is allowed as long | |
| as the name is changed. | |
| DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE | |
| TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | |
| 0. You just DO WHAT THE FUCK YOU WANT TO. |
| { | |
| "name": "factorization", | |
| "description": "factorization the integer.", | |
| "keywords": [ | |
| "factorization", | |
| "math", | |
| "number", | |
| ] | |
| } |
| <!DOCTYPE html> | |
| <title>Factorization</title> | |
| <div>Expected value: <b>2,2,2,2,2,3,3,3,,-1,2,3,7,,0</b></div> | |
| <div>Actual value: <b id="ret"></b></div> | |
| <script> | |
| // write a small example that shows off the API for your example | |
| // and tests it in one fell swoop. | |
| var factor = function(n,i,r){r=[];if(n<0){n=-n;r[0]=-1}for(i=2;i<=n;i++)if(n%i==0){r.push(i);n/=i--}r[0]=n?r[0]?r[0]:1:0;return r} | |
| document.getElementById( "ret" ).innerHTML = [factor(864),, | |
| factor(-42),, | |
| factor(0)]; | |
| </script> |
Sieve of Eratosthenes with linear time work (115bytes)
var r=[2];function factor(N){for(var i=0,x=2;x*x<=N&&N%x;x=r[i])if(!r[++i])while(factor(r[i]=++x));return N%x?0:x}var r=[2]; // Sieve of Eratosthenes
function factor(N)
{
for(var i=0,x=2;x*x<=N&&N%x;x=r[i]) // Loop numbers of sieve
if(!r[++i]) // if sieve finished
while(factor(r[i]=++x)); // fill sieve new values
return N%x?0:x // return divider or zero
}
104b!