质数


  1. 题目:
    我们知道第一个质数是 2、第二个质数是 3、第三个质数是 5……
    请你计算第 2019 个质数是多少?

2.代码实现:

点击查看代码
#include
#include
int main()
{
  int i,j,sum;
  for(i=2;sum!=2019;i++){
    for(j=2;jsqrt(i)){
      sum++;
    }
  }
  printf("%d",i-1);
  return 0;
}

试除法判断质数,其实本质是根据质数的定义进行暴力枚举,但是我们可以通过质数的一个性质,来优化循环的次数,这个性质就是: 如果d是n的约数,那么 n / d也是 n 的约数,即一个数的约数是成对出现的 通过这个性质可以优化试除法,时间复杂度由O(n)变为O(sqrt(n))