2.5 KiB
2.5 KiB
id | challengeType | title |
---|---|---|
5900f38f1000cf542c50fea2 | 5 | Problem 35: Circular primes |
Description
Instructions
Tests
tests:
- text: <code>circularPrimes(100)</code> should return 13.
testString: 'assert(circularPrimes(100) == 13, ''<code>circularPrimes(100)</code> should return 13.'');'
- text: <code>circularPrimes(100000)</code> should return 43.
testString: 'assert(circularPrimes(100000) == 43, ''<code>circularPrimes(100000)</code> should return 43.'');'
- text: <code>circularPrimes(250000)</code> should return 45.
testString: 'assert(circularPrimes(250000) == 45, ''<code>circularPrimes(250000)</code> should return 45.'');'
- text: <code>circularPrimes(500000)</code> should return 49.
testString: 'assert(circularPrimes(500000) == 49, ''<code>circularPrimes(500000)</code> should return 49.'');'
- text: <code>circularPrimes(750000)</code> should return 49.
testString: 'assert(circularPrimes(750000) == 49, ''<code>circularPrimes(750000)</code> should return 49.'');'
- text: <code>circularPrimes(1000000)</code> should return 55.
testString: 'assert(circularPrimes(1000000) == 55, ''<code>circularPrimes(1000000)</code> should return 55.'');'
Challenge Seed
function circularPrimes(n) {
// Good luck!
return n;
}
circularPrimes(1000000);
Solution
const circularPrimes = (n) => {
const primeCheck = (num) => {
if (num === 1) {
return false;
}
for (let i = 2; i <= Math.floor(Math.sqrt(num)); i++) {
if (num % i === 0) {
return false;
}
}
return true;
};
let count = 1;
for (let i = 1; i < n; i += 2) {
if (primeCheck(i)) {
let flag = true;
let circularNum = i.toString();
for (let j = 1; j < i.toString().length; j++) {
circularNum = circularNum.substring(1) + circularNum.substring(0, 1);
if (primeCheck(Number(circularNum)) === false) {
flag = false;
break;
}
}
if (flag) {
count++;
}
}
}
return count;
};