纯粹素数是这样定义的:一个素数,去掉最高位,剩下的数仍为素数,再去掉剩下的数的最高位,余下的数还是素数。这样下去一直到最后剩下的个位数也还是素数。现给出一个数字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;
}