预处理素数快速筛选法:
#include <iostream>
#include <cmath>
#include <cstring>
using namespace std;
const int maxn = 100001;
int a[maxn];
int main(){
int primeNum, From, To;
memset(a, 0, sizeof(a)); //初始所有数为素数
a[0] = a[1] = 2; //0和1既不是素数也不是合数
for(int i=2; i<=maxn; i++){
if(a[i] == 0){
for(int j=i+i; j<=maxn; j+=i) a[j] = 1; //筛掉所有素数的倍数
}
}
//升序输出任意范围的素数和素数数目
while(cin >> From >> To)
{
primeNum = 0;
for(int i=From; i<=To; i++){
if(a[i] == 0){
if(primeNum) cout << " " << i;
else cout << i;
primeNum++;
}
}
cout << endl << primeNum << endl;
}
return 0;
}