赞
踩
【问题描述】
我们知道第一个质数是 2、第二个质数是 3、第三个质数是 5……
请你计算第 2019 个质数是多少?
质数(Prime number):
又称素数,指只有1与该数本身两个正因数的数。
因数(factor):
又称约数,两个正整数相乘,那么这两个数都叫做积的因数。
判断质数:定义上看,我们需要在 [2, n-1] 范围内寻找 n 的非平凡因数,但实际上范围可以缩小到 [2, n \sqrt{n} n ] 。数论推导过程,可参考:怎样优雅地判断一个数是不是质数?。
代码解读:
1)isprime(int x)
判断x
是否为质数。 用for循环判断x
是否能被[2,
n
\sqrt{n}
n
]中的任意一个数整除。若能,则不是质数,返回0;反之,则是质数,返回1。
2) main()
中,if(isprime(++num))
等价于,先num = num + 1
,再if(isprime(num))
。
#include <iostream>
using namespace std;
int isPrime(int x){ // 判断x是否为质数
int i;
for(i=2; i*i<=x; i++){
if(x%i==0)
return 0;
}
return 1;
}
int main()
{
//第count个质数是num
int count = 1;
int num = 2;
while (1){
if(isPrime(++num)){ //若num+1为质数
if (++count == 2019){ //且count+1==2019
cout << num << endl;
break;
}
}
}
return 0;
}
import math
def is_prime(x): # 判断x是否为质数
for i in range(2,math.ceil(x**0.5)+1):
if x%i==0:
return False
return True
#第count个质数是num
count = 1
num = 2
while True:
num = num + 1
if(is_prime(num)):
count = count +1
if(count == 2019):
print(num)
break
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。