问题描述
给定一个正整数 N,请你输出 N 以内(不包含 N)的质数以及质数的个数。
输入格式
输入一行,包含一个正整数 N。
输出格式
第 1 行包含若干个素数,每两个素数之间用一个空格隔开,素数从小到大输出。
第 2 行包含一个整数,表示 N 以内质数的个数。
样例输入
10
样例输出
2 3 5 7
4
数据范围
N ≤ 1000
题解
埃氏筛法:
#include <iostream>
#include <cstring>
using namespace std;
const int N = 1010;
int st[N], prime[N];
int main()
{
int n;
cin >> n;
memset(st, 1, sizeof st);
int k = 0;
for (int i = 2; i < n; i ++)
if(st[i])
{
prime[k ++] = i;
for (int j = i + i; j <= n; j += i) st[j] = false;
}
for (int i = 0; i < k; i ++) cout << prime[i] << " ";
cout << endl;
cout << k << endl;
return 0;
}