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
 ...