2884: 练60.5 素数筛选

内存限制:64 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:3 解决:1

题目描述

试编一个程序,用筛数法输出$100$以内所有的素数,并统计个数。

输入

无。

输出

$100$以内所有的素数,并在下一行统计出素数个数。

样例输入 复制

样例输出 复制

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
100以内的素数个数: 25

提示

#include<iostream>
#include<cstdio>
#include<cstring>
#include<math.h>
#include<algorithm>
using namespace std;
int main(){
    bool a[101];
    int i,j,num;
    for (int i=2;i<=100;i++){
        a[i]=true;
    }
    a[0]=a[1]=false;
    i=1;
    do{
        i++;
        if (a[i]){
            for (j=2;j<=100/i;j++){ //枚举
                a[i*j]=false; //做上标记
            }
        }
    }while (i<100);
    num=0;
    for (int i=1;i<=100;i++){
        if (a[i]){
            printf("%d ",i);
            num++;
            //if (num%10==0) cout<<endl;
        }
    }
    cout<<endl;
    cout<<"100以内的素数个数:"<<num<<endl;
    return 0;
}