纯粹素数2

纯粹素数是这样定义的:一个素数,去掉最高位,剩下的数仍为素数,再去掉剩下的数的最高位,余下的数还是素数。这样下去一直到最后剩下的个位数也还是素数。现给出一个数字N,求小于N的纯粹素数

Format

Input

一行给出一个数字N,N<=100000

Output

按从小到大的顺序输出若干个纯粹素数,每行一个。

输入数据 1

15

输出数据 1

2
3
5
7
13 

思路:这道题与上一题不一样的是,这次的N不知道多少位了,只需要再来一个算N有几位的函数了。。

CODE:

#include<bits/stdc++.h>
using namespace std;
bool su1(int a) {
	bool flag=true;
	for(int i=2; i*i<=a; i++) {
		if(a%i==0) {
			flag=false;
			break;
		}
	}
	if(a==1)
		flag=false;
	return flag;
}
int wei(int a) {//判断位数
	int s=0;
	while(a!=0)
		a/=10,s++;
	return s;
}
bool su(int sum) {
	int b=sum,d=pow(10,wei(sum));//pow(a,b)表示a的b次方
	bool flag2=true;
	while(d!=0) {
		if(su1(b%d)==false) {
			flag2=false;
			break;
		}
		b%=d;
		d/=10;
	}
	return flag2;
}
int main() {
	int n;
	cin>>n;
	for(int i=1; i<=n; i++) {
		if(su(i)) {
			cout<<i<<endl;
		}
	}
	return 0;
}

おすすめ

転載: blog.csdn.net/weixin_55599629/article/details/119998730