筛选法求素数模板

来源:互联网 发布:网络动漫黑名单 编辑:程序博客网 时间:2024/06/07 21:05
#include <iostream>#include<stdio.h>using namespace std;const int N=1e6;                        //根据需要更改int a[N];                                       //标记数组,0标记素数,1标记合数int prime[N];                               //素数数组int main(){    int k=0;    for(int i=2;i*i<N;i++)             //一个数n如果是合数,那么它所有的因子不会超过sqrt(n);    {        if(a[i]==0)                             //一个数可以表示成素数因子的乘积        {            prime[k++]=i;            for(int j=i*i;j<N;j+=i)                a[j]=1;        }    }    int n,sum=0;    scanf("%d",&n);    for(int i=2;i<=n;i++)    {        if(a[i]==0)            sum++;    }    printf("%d\n",sum);             //输出n以内的素数个数    printf("%d",prime[0]);    for(int i=1;i<=n-1;i++)        printf(" %d",prime[i]);     //输出前n个素数    return 0;}

原创粉丝点击