站外题求助!一半AC一半TE!
  • 板块题目总版
  • 楼主封禁用户
  • 当前回复3
  • 已保存回复3
  • 发布时间2021/7/10 14:52
  • 上次更新2023/11/4 15:09:12
查看原帖
站外题求助!一半AC一半TE!
511528
封禁用户楼主2021/7/10 14:52

题目:超级素数

题目描述

一个素数如果从个位开始,依次去掉一位数字、两位数字、三位数字……直到只剩一个数字,中间所有剩下的数都是素数,则该素数为一个超级素数。例如:2333是一个素数,因为2333,233,23,2都是素数,所以2333是一个四位的超级素数。

请写一个程序,给定一个整数,求大小不超过N的所有超级素数。

输入格式

一行包含一个整数N(1<=N <= 1,000,000,000)。

输出格式

第一行,一个整数K,表示N以内超级素数的个数。

接下来的K行,每行包含一个整数,按从小到大的顺序输出所有N以内的超级素数。

数据范围与提示

1<=N <= 1,000,000,000

输入输出样例

样例1

输入样例 复制

100

输出样例 复制

13

2

3

5

7

23

29

31

37

53

59

71

73

79

#include <bits/stdc++.h>
using namespace std;
int n,s,a;
int prime[1000010],answer[1000010];
bool f(int num) {
	if(prime[num]) {
		return false;
	}
	else if(!(num/10)) return true;
	else if(f(num/10)) return true;
	else return false;
}
int main(){
    cin>>n;
    prime[1]=1;
    for(int i=1;i<=n;i++) {
    	for(int j=2;j*j<=i;j++) {
    		if(i%j==0) {
    			prime[i]=1;
    			break;
			}
		}
	}
	for(int i=1;i<=n;i++) {
		if(f(i)) {
			s++;
			answer[++a]=i;
		}
	}
	cout<<s<<endl;
	for(int i=1;i<=a;i++) {
		cout<<answer[i]<<endl;
	}
    return 0;
}
2021/7/10 14:52
加载中...