56 lines
1.3 KiB
Markdown
56 lines
1.3 KiB
Markdown
---
|
||
title: 10001st prime
|
||
localeTitle: 第10001个素数
|
||
---
|
||
## 问题7:10001个素数
|
||
|
||
### 方法:
|
||
|
||
* 素数是一个除以1和自身的数字。
|
||
* 我们可以发现一个数字是素数,如果它不能被小于其自身的其他素数整除。
|
||
|
||
### 解:
|
||
|
||
```js
|
||
function nthPrime(n) {
|
||
|
||
//Primes array which will store all the prime numbers
|
||
const primes = [2];
|
||
|
||
//Num is the number we want to check
|
||
let num = 3, isPrime = true;
|
||
|
||
//Looping until primes array is equal to n
|
||
while (primes.length < n){
|
||
|
||
//All the primes numbers of a number is always <= it's square root
|
||
let max = Math.ceil(Math.sqrt(num));
|
||
|
||
for (let i = 0; primes[i] <= max; i++){
|
||
if (num % primes[i] == 0) {
|
||
|
||
//Looping till we find the prime
|
||
isPrime = false;
|
||
break;
|
||
}
|
||
}
|
||
|
||
//if Prime found, push it to the array
|
||
if (isPrime) primes.push(num);
|
||
isPrime = true;
|
||
|
||
//An optimization technique, since we know of all even numbers only 2 is a prime number, we can skip the rest
|
||
num+=2;
|
||
}
|
||
|
||
//Returning the last number
|
||
return primes[primes.length-1];
|
||
|
||
}
|
||
```
|
||
|
||
\- [运行代码](https://repl.it/@ezioda004/Project-Euler-Problem-7-10001st-prime)
|
||
|
||
### 参考文献:
|
||
|
||
* [维基百科](https://en.wikipedia.org/wiki/Prime_number) |