JSFiddle - React, Tailwind, and code Playground
Euler
by dhizzybusy
HTML
Enter Value: <input type="textbox" id="input" /><input type="textbox" id="input2" /><br/><br/>
Utilities to Support Problems:<br/>
<input type="button" value="Get Primes"
onclick="addToOutput('Primes: '+ GetPrimes(document.getElementById('input').value))" />
<input type="button" value="Get Triangle Numbers"
onclick="addToOutput('Triangle Numbers: '+ TriangleNumbers(document.getElementById('input').value))" />
<input type="button" value="Get Factors"
onclick="addToOutput('Factors: ' + CalculateFactors(document.getElementById('input').value))" />
<input type="button" value="Get Prime Factors"
onclick="addToOutput('Prime Factors: ' + PrimeFactors(document.getElementById('input').value))" />
<input type="button" value="Is Triangle Number"
onclick="addToOutput('Is Triangle Number: ' + IsTriangleNumber(document.getElementById('input').value))" />
<input type="button" value="Triangle Pattern"
onclick="TrianglePattern(document.getElementById('input').value)" />
<br/> <br/>
<input type="button" value="Count Factors"
onclick="alert(CountFactorsQuick(document.getElementById('input').value))" />
<input type="button" value="Permutations"
onclick="alert(permutation(['1','2','3','4', '5']).length)" />
<input type="button" value="Multiply"
onclick="tryMultiply()" />
<br/> <br/>
<input type="button" value="Problem 1" onclick="DoEulerProblem1()" />
<input type="button" value="Problem 2" onclick="DoEulerProblem2()" />
<input type="button" value="Problem 3" onclick="DoEulerProblem3()" />
<input type="button" value="Problem 4" onclick="DoEulerProblem4()" />
<input type="button" value="Problem 5" onclick="DoEulerProblem5()" /><br/>
<input type="button" value="Problem 6" onclick="DoEulerProblem6()" />
<input type="button" value="Problem 7" onclick="DoEulerProblem7()" />
<input type="button" value="Problem 8" onclick="DoEulerProblem8()" />
<input type="button" value="Problem 10"...
JavaScript
function GetPrimes(n){
// Function that returns prime factors of n
return SieveOfErasthones(n);
}
function TriangleNumbers(upperBound, lowerBound){
lowerBound = typeof lowerBound !== 'undefined' ? lowerBound : 1;
var a=[];var sum = 1; var i=0;
sum = 1;
while (sum < upperBound){
sum += (++i + 1);
if (sum > lowerBound) a.push(sum);
}
return a;
}
function IsTriangleNumber(v){
var v1 = 8*v + 1;
var v2 = Math.sqrt(v1);
return Number.isInteger(v2);
}
function TrianglePattern(n){
for (var i=1; i<=n; i+=2){
var v = (i*i-1)/8;
addToOutput(i + " Triangle Number:" + v + " Factors [" + CalculateFactors(v) + "]");
}
}
function CalculateFactors(n) {
// Answers all factors of n
var a=[];
for (var i=1; i<=n; i++) {
if (n%i == 0) a.push(i);
}
return a;
}
function CountFactorsQuick(n) {
// Answers all factors of n
var m = Math.sqrt(n);
var a = 0;
for (var i=1; i<=m; i++) {
if (n%i == 0) a++;
}
return 2*a;
}
function CalculateBigOnlyFactors(n) {
// Answers all factors of n
var a=[];
if (n%2 != 0) return a;
if (n%3 != 0) return a;
if (n%5 != 0) return a;
if (n%7 != 0) return a;
for (var i=1; i<=n; i++) {
if (n%i == 0) a.push(i);
}
return a;
}
function PrimeFactors(n) {
//Answers Prime Factors of n
var results = [];
var primes = GetPrimes(Math.ceil(n/2)+3);
var i = 0;
while (primes.length != 0) {
if (n%primes[0] == 0) {
results.push(primes[0]);
n /= primes[0];
}
else {
primes.shift();
i++;
}
}
return results;
}
function SieveOfErasthones(n) {
// Answers the primes up to n
var a = []; var p = []; var c = [];
// Create Array of elements
for (var i=2; i < n; i++) {a.push(i);}
while (a.length > 1){
var b = a.shift(); // dequeue from a and add to p
p.push(b);
//c.push(b);
//if(c.length > 50) {addToOutput(c); c = [];}
// Remove multiples from a
var l = a.length;
for (var i=0; i < l; i++) {
// Take it off and add it back on
...