I'm attempting a codewars.com challenge and I'm having some issues with making my code more efficient. The instructions for the challenge are to find all the primes in a range, then I have to find two prime numbers with a specified gap between them.
I've written an algorithm that works but takes too long to complete all of the test cases. You can see the code below:
function gap(g, m, n) {
// your code
var stopNumber;
var checkIfInteger;
var primeNumbersInRange = [];
var arrayIndex = 0;
var gap;
//iterate through all of the numbers in the range and find if they're prime
for( var numberToCheck = m; numberToCheck <= n; numberToCheck++){
var checkedTwoAndThreePass = true;
checkIfInteger = numberToCheck / 2;
if(Number.isInteger(checkIfInteger)){
checkedTwoAndThreePass = false;
}
checkIfInteger = numberToCheck / 3;
if(Number.isInteger(checkIfInteger)){
checkedTwoAndThreePass = false;
}
if(checkedTwoAndThreePass){
var k = 1;
var primeNumberCheck = true;
stopNumber = Math.sqrt(numberToCheck);
while( ((6 * k) - 1) <= stopNumber & primeNumberCheck === true ){
checkIfInteger = numberToCheck / ((6 * k) - 1);
if(Number.isInteger(checkIfInteger)){
primeNumberCheck = false;
}
else{
checkIfInteger = numberToCheck / ((6 * k) + 1);
if(Number.isInteger(checkIfInteger)){
primeNumberCheck = false;
}
}
k++;
}
if(primeNumberCheck === true){
primeNumbersInRange[arrayIndex] = numberToCheck;
arrayIndex++;
}
}
}
for(var i = 0; i < primeNumbersInRange.length; i++){
gap = primeNumbersInRange[(i+1)] - primeNumbersInRange[i];
if(gap === g){
var primeNumbersThatMeetGap = [primeNumbersInRange[i], primeNumbersInRange[(i+1)]];
return primeNumbersThatMeetGap;
}
}
var primeNumbersThatMeetGap = null;
return primeNumbersThatMeetGap;
}