首先我们说说超级素数的定义
一个素数,如果依次从最高位去一个数字仍是素数,则为超级素数
比如:211是素数,去掉高位2后11是素数,再去掉一个高位1后1也是素数,顾211为超级素数
源代码如下
#include<iostream>
#include<cmath>
using namespace std;
bool isPrime(int num)
{
int i;
for(i=2;i<=sqrt(num);i++)
if(num%i==0)
return false;
return true;
}
bool has0(int num)
{
while(num)
{
if(num%10==0)
return true;
num/=10;
}
return false;
}
int len(int num)
{
int n=0;
while(num)
{
num/=10;
n++;
}
return n;
}
int main()
{
int i;
int cnt=0;
for(int i=10;i<2000;i++)
{
bool flag=true;
int t=i;
if(has0(i)||!isPrime(i))
continue;
for(int j=len(i)-1;j>0;j–)
{
t%=int(pow(10,j));
if(!isPrime(t))
{
flag=false;
break;
}
}
if(flag)
{
cout<<i<<‘\t’;
cnt++;
if(cnt%5==0)
cout<<endl;
}
}
return 0;
}