您的位置:首页 > 其它

筛选素数(埃式筛选法)

2018-03-13 18:16 281 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: