质数(素数)

来源:互联网 发布:口袋妖怪编辑队伍软件 编辑:程序博客网 时间:2024/06/05 10:46
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;}