bool is_prime(int num)
{
int k;
k=sqrt(num);
for(int i=2; i<=k; i++)
if(num%i==0)return false;
return true;
}
//另外一种形式写法,排除了偶数的情况
bool is_prime(int num)
{
if(num<2)return false;
if(num==2)return true;
if(num%2==0)return false;
for(int i=3; i*i<num; i+=2)
if(num%i==0)return false;
return true;
}
//如果要求N以内的素数,用下面的筛法求效率更高
#include <iostream>
using namespace std;
const int MaxNum = 10000000;
bool isprime[MaxNum+10] {};
//如果isprime[i]为0,则表示i是素数,开始假设所有数都是素数
int main()
{
int n;
cin >> n;
for(int i=2; i<=n; i++)
if(!isprime[i])//只处理未标记的素数
for(int j=2*i; j<=n; j+=i)//素数的倍数都不是素数,要标记出来
isprime[j]=true;
for(int i=2; i<=n; i++)
if(!isprime[i])
cout << i << endl;
return 0;
}
质数(素数)
最新推荐文章于 2021-04-13 15:44:32 发布