C++N位质数(欧拉筛)

第五次实验 - 副本
编程题
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
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值