【题目链接】
ybt 1099:第n小的质数
OpenJudge NOI 1.5 44:第n小的质数
【题目考点】
1. 质数
- 质数的因数只有1和它本身。
- 判断数a是否是质数:循环变量i从2开始循环到 a \sqrt{a} a,若存在a能整除的数字(即a的因数),那么a不是质数。否则a是质数。
bool isPrime(int a)//判断a是否是质数,已知a >= 2
{
for(int i = 2; i <= sqrt(a); i++)
{
if(a % i == 0)
return false;
}
return true;
}
【解题思路】
- 设判断质数的函数
- 设变量ct用于计数,每找到一个质数,ct就增加1,当ct等于n时,输出刚刚找到的质数,就是第n小的质数。
【题解代码】
解法1:
#include<bits/stdc++.h>
using namespace std;
bool isPrime(int a)//判断a是否是质数,已知a >= 2
{
for(int i = 2; i <= sqrt(a); i++)
{
if(a % i == 0)
return false;
}
return true;
}
int main()
{
int n, ct = 0;//ct:计数
cin>>n;
for(int i = 2; true; ++i)
{
if(isPrime(i))//判断i是否是质数
{
ct++;
if(ct >= n)//如果已经找到第n小的质数
{
cout<<i;//那么输出i
return 0;
}
}
}
}