Project Euler Problem #35
JavaScript
var prime = {};
prime.isPrime = function(num) {
num = (num > 0) ? num : num * -1;
return factors.getFactors(num).length <= 2;
}; //Checks if the provided number is prime
var factors = {};
factors.getFactors = function(number) {
var factors = [];
var possibleFactor = 1;
var sqrt = Math.sqrt(number);
while (possibleFactor <= sqrt) {
if (number % possibleFactor == 0) {
factors[factors.length] = possibleFactor;
var otherPossibleFactor = number / possibleFactor;
if (otherPossibleFactor > possibleFactor) {
factors[factors.length] = otherPossibleFactor;
}
}
possibleFactor++;
}
return factors;
}; //End of factors.getFactors function
var bigNumber = {};
bigNumber.createFromNumber = function(number) {
var bigNum = [number];
bigNumber.rebalanceDigitArray(bigNum);
return bigNum;
};
bigNumber.rebalanceDigitArray = function(digits, index) {
index = index || 0;
var digit = digits[index];
while (digit > 9) {
//Update the current index
digits[index] = digit % 10;
//Update the next index
index++;
digits[index] = digit = (digits[index] || 0) + ((digit - digit % 10) / 10);
}
}; //End of bigNumber.rebalanceDigitArray function
//---------------------
/**
* Gets the circular primes for numbers below/including the specified number of digits.
*/
var getCircularPrimes = function(numDigits) {
var circularPrimes;
if (numDigits < 1) {
circularPrimes = {};
} else if (numDigits == 1) {
circularPrimes = {
'2': true,
'3': true,
'5': true,
'7': true
};
} else {
var circularPrimes = getCircularPrimes(numDigits - 1);
var digits = [];
for (var i = 0; i < numDigits; i++) {
digits[i] = 1;
}
var continueLoop = true;
while (continueLoop) {
var...