freeCodeCamp/guide/chinese/certifications/coding-interview-prep/project-euler/problem-7-10001st-prime/index.md

56 lines
1.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
title: 10001st prime
localeTitle: 第10001个素数
---
## 问题710001个素数
### 方法:
* 素数是一个除以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)