c++ 2000以内的超级素数

  • Post author:
  • Post category:其他


首先我们说说超级素数的定义

一个素数,如果依次从最高位去一个数字仍是素数,则为超级素数

比如: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;

}



版权声明:本文为qq_74902796原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。