题目地址:http://noi.openjudge.cn/ch0105/44/
质数,又称素数,定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数
验证一个数是否是素数,最常用的方法是:
给定一个大于2的数,对这个数求平方根,如果这个数能被从0到平方根的数中任意一个数整除,那么这个数就是不是质数,否则这个数就是质数。
原理是:
如果一个数不是质数,一定能分解成两个数相乘的形式,这两个数一个>=sqrt(num),一个<=sqrt(num),因此一定有一个是小于等于平方根的,所以只需验证到平方根就可以知道这个数是不是质数。
质数判断:
bool isPrime(int num)
{
if(num == 2)
return true;
int tmp = sqrt(num);
for(int i=2;i<=tmp;i++)
{
if(num%i == 0)
{
return false;
}
}
return true;
}
完整代码:
#include "iostream"
#include "math.h"
using namespace std;
/*质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。*/
bool isPrime(int num)
{
if(num == 2)
return true;
int tmp = sqrt(num);
for(int i=2;i<=tmp;i++)
{
if(num%i == 0)
{
return false;
}
}
return true;
}
int main()
{
int n;
cin>>n;
int count = 0;
for(int i=2;i<=1000000000;i++)
{
if(isPrime(i))
{
count++;
}
if(count>=n) {
cout<<i;
return 0;
}
}
}