--- id: 5900f38f1000cf542c50fea2 challengeType: 5 title: 'Problem 35: Circular primes' --- ## Description
The number, 197, is called a circular prime because all rotations of the digits: 197, 971, and 719, are themselves prime. There are thirteen such primes below 100: 2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73, 79, and 97. How many circular primes are there below n, whereas 100 <= n <= 1000000?
## Instructions
## Tests
```yml tests: - text: circularPrimes(100) should return 13. testString: assert(circularPrimes(100) == 13, 'circularPrimes(100) should return 13.'); - text: circularPrimes(100000) should return 43. testString: assert(circularPrimes(100000) == 43, 'circularPrimes(100000) should return 43.'); - text: circularPrimes(250000) should return 45. testString: assert(circularPrimes(250000) == 45, 'circularPrimes(250000) should return 45.'); - text: circularPrimes(500000) should return 49. testString: assert(circularPrimes(500000) == 49, 'circularPrimes(500000) should return 49.'); - text: circularPrimes(750000) should return 49. testString: assert(circularPrimes(750000) == 49, 'circularPrimes(750000) should return 49.'); - text: circularPrimes(1000000) should return 55. testString: assert(circularPrimes(1000000) == 55, 'circularPrimes(1000000) should return 55.'); ```
## Challenge Seed
```js function circularPrimes(n) { // Good luck! return n; } circularPrimes(1000000); ```
## Solution
```js 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; }; ```