在程序设计比赛中,有很多的题目会要求判断质数,所以学会质数筛是很有必要的。
质数,是一个大于1的自然数,且只有1和它本身两个因数,这样的数被称为质数,其它的都称作素数,所以我们可以根据质数的特性来写一个质数筛。
#include<iostream>
#include <algorithm>
#include<cmath>
using namespace std;
bool is_pram(int n)
{
if(n==0||n==1)return 0;
else if(n>=2)
{
for(int i=2;sqrt(i*i)<=n;i++)
{
if(n%i==0)
{
return 0;
}
else
{
return 1;
}
}
}
}
int main()
{
int n=0;
cin>>n;
cout<<is_pram(n)<<endl;
}
首先,要求质数是一个大于1的自然数,所以可以先对输入的数是否为0或1进行判断
如果是0或1的话直接返回0;
然后,对之后的质数判断有个问题,怎么对它的因数进行判断,这其实是一个数学问题,控制枚举的量,如果全部枚举,会非常慢,如果只枚举到它的开根的情况就可以很好的判断,减少了枚举量。