筛选素数(埃式筛选法)

#include <iostream>

#include <cstring>


using namespace std;


int  ASSX(int n,int *prime,bool *is_prime)
{
    int i=2,c=0,j;

    memset(is_prime,true,sizeof(int )*10000);   //给is_prime[ ]数组全部赋为true值

                                                                   //memset 函数头文件件<cmemory>或<cstring>, memset(首地址,替换体,                                                                       sizeof(数据类型)*数量);


    is_prime[0]=is_prime[1]=false;                 


    for(i=2;i <=n;i++)      
    {
        if(is_prime[i])
        {
            prime[c++]=i;


            for(j=2*i;j<=n;j=j+i)                           //找倍数
            {
                is_prime[j]=false;
            }
        }
    }


    return c;


}
int main()
{
    int prime[10000];
    bool is_prime[10000];
    int c,i;
    int n;


    cin >>n;

    c=ASSX(n,prime,is_prime);

    for(i=0;i <c;i++)
    cout <<prime[i]<<endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41199502/article/details/79544323
今日推荐