Find the 10001st Prime Number

  • 时间:2020-09-10 12:55:33
  • 分类:网络文摘
  • 阅读:87 次

By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.
What is the 10001st prime number?

Test Prime Number

A prime number has exactly two factors: 1 and itself. Thus we can write a quick prime testing function. Please note that we only need to test up to Square Root of N, as if we find factor a, there will be N/a.

1
2
3
4
5
6
7
8
function isPrime(n) {
    if (n <= 1) return false;
    if (n == 2) return true;
    for (let i = 2; i * i <= n; ++ i) {
        if (n % i == 0) return false;
    }
    return true;
}
function isPrime(n) {
    if (n <= 1) return false;
    if (n == 2) return true;
    for (let i = 2; i * i <= n; ++ i) {
        if (n % i == 0) return false;
    }
    return true;
}

The runtime complexity is O(Sqrt(N)).

Find the N-th Prime Number

Then, we can then compute the N-th prime number using the following:

1
2
3
4
5
6
7
8
9
10
11
12
function findNthPrime(N) {
  let prime = 2;
  let i = 1;
  while (i < N) {
    do {
        prime ++;
    } while (!isPrime(prime));
    i ++;
  }
  return prime;
}
console.log(findNthPrime(10001));
function findNthPrime(N) {
  let prime = 2;
  let i = 1;
  while (i < N) {
    do {
        prime ++;
    } while (!isPrime(prime));
    i ++;
  }
  return prime;
}
console.log(findNthPrime(10001));

The answer is 104743.

We can improve a little bit, as we know that prime numbers cannot be even except 2, thus we can skip two intead of one.

1
2
3
4
5
6
7
8
9
10
11
12
13
function findNthPrime(N) {
    if (N == 1) return 2;
    if (N == 2) return 3;
    let prime = 3;
    let i = 2;
    while (i < N) {
      do {
          prime += 2;
      } while (!isPrime(prime));
      i ++;
    }
    return prime;
  }
function findNthPrime(N) {
    if (N == 1) return 2;
    if (N == 2) return 3;
    let prime = 3;
    let i = 2;
    while (i < N) {
      do {
          prime += 2;
      } while (!isPrime(prime));
      i ++;
    }
    return prime;
  }

–EOF (The Ultimate Computing & Technology Blog) —

推荐阅读:
诗词名句鉴赏:我思古人,实获我心。  诗词名句鉴赏:投我以木桃,报之以琼瑶。  诗词名句鉴赏:知我者,谓我心忧;不知我者,谓我何求。  齐桓公伐楚盟屈完原文及翻译  曹刿论战原文及翻译  数学题:组成只能被3整除不能被9整除的4位数  数学题:将某款服装按标价打8折出售,仍可盈利10%  数学题:把一根长30cm,底面半径是8cm的圆木平均锯成4段  数学题:甲乙两种皮鞋的原价相同,换季时  奥数题:1994年“世界杯”足球赛中 
评论列表
添加评论