87 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| id: 5900f3731000cf542c50fe86
 | |
| title: '問題 7: 10001 番目の素数'
 | |
| challengeType: 5
 | |
| forumTopicId: 302182
 | |
| dashedName: problem-7-10001st-prime
 | |
| ---
 | |
| 
 | |
| # --description--
 | |
| 
 | |
| 最初の 6 つの素数、すなわち 2, 3, 5, 7, 11, 13 を並べると、6 番目の素数が 13 であることが分かります。
 | |
| 
 | |
| `n` 番目の素数を求めなさい。
 | |
| 
 | |
| # --hints--
 | |
| 
 | |
| `nthPrime(6)` は数値を返す必要があります。
 | |
| 
 | |
| ```js
 | |
| assert(typeof nthPrime(6) === 'number');
 | |
| ```
 | |
| 
 | |
| `nthPrime(6)` は 13 を返す必要があります。
 | |
| 
 | |
| ```js
 | |
| assert.strictEqual(nthPrime(6), 13);
 | |
| ```
 | |
| 
 | |
| `nthPrime(10)` は 29 を返す必要があります。
 | |
| 
 | |
| ```js
 | |
| assert.strictEqual(nthPrime(10), 29);
 | |
| ```
 | |
| 
 | |
| `nthPrime(100)` は 541 を返す必要があります。
 | |
| 
 | |
| ```js
 | |
| assert.strictEqual(nthPrime(100), 541);
 | |
| ```
 | |
| 
 | |
| `nthPrime(1000)` は 7919 を返す必要があります。
 | |
| 
 | |
| ```js
 | |
| assert.strictEqual(nthPrime(1000), 7919);
 | |
| ```
 | |
| 
 | |
| `nthPrime(10001)` は 104743 を返す必要があります。
 | |
| 
 | |
| ```js
 | |
| assert.strictEqual(nthPrime(10001), 104743);
 | |
| ```
 | |
| 
 | |
| # --seed--
 | |
| 
 | |
| ## --seed-contents--
 | |
| 
 | |
| ```js
 | |
| function nthPrime(n) {
 | |
| 
 | |
|   return true;
 | |
| }
 | |
| 
 | |
| nthPrime(10001);
 | |
| ```
 | |
| 
 | |
| # --solutions--
 | |
| 
 | |
| ```js
 | |
| const nthPrime = n => {
 | |
|   let pN = 2;
 | |
|   let step = 0;
 | |
|   while (step < n) {
 | |
|     let isPrime = true;
 | |
|     let rootN = Math.sqrt(pN);
 | |
|     for (let i = 2; i <= rootN; i++) {
 | |
|       if (!(pN % i)) {
 | |
|         isPrime = false;
 | |
|         break;
 | |
|       }
 | |
|     }
 | |
|     isPrime ? step++ : '';
 | |
|     pN++;
 | |
|   }
 | |
|   return pN - 1;
 | |
| }
 | |
| ```
 |