第五次实验 - 副本
编程题
7. N位质数
【问题描述】给定一个整数N(2 <= N <= 8),生成所有的具有下列特性的特殊的N位质数,即其前任意位都是质数。例如,7331即是这样一个4位的质数,因为7、73和733也都是质数。
【输入形式】输入一个整数N(2 <= N <= 8)。
【输出形式】输出有若干行,每行有一个整数,该整数有N位,而且其前任意位都是质数。并且:
1.要求输出所有符合题意的质数。
2.从小到大按顺序输出,且所有行上的数字不得重复。
【样例输入】2
【样例输出】
23
29
31
37
71
73
79
【样例说明】输出2位的质数,而且其前的任何一个数也是质数。
【运行时限】要求每次运行时间限制在20秒之内。超出时间则认为程序错误。
【评分标准】结果完全正确得20分,每个测试点4分。
我觉得真正的大佬不会来搜这题,这题第一反应是欧拉筛,Nmax=8,用朴素判断素数会超时.
于是我兴致勃勃地去学了质数筛,结果交了好几次才得了满分.
#include<bits/stdc++.h>
using namespace std;
const int maxn=100000001;
int prime[maxn];
bool sf[maxn];
void CreatPrimeTable(void){
int num=0;
fill(sf,sf+maxn,1);
for(int i=2;i<=maxn;i++){
if(sf[i])prime[++num]=i