超级素数
一个素数,依次从最高位去掉一位,两位……若得到的都是素数,且各数字不为0,则称为超级素数。
简单C语言算法:
/*TC2.0调试成功*/
#include "stdio.h"
#include "math.h"
int prime(int i){/*判断是否为素数*/
int j;
if(i==1) return 0;
for(j=2;j<=sqrt(i);j++)
if(i%j==0) return 0;
return 1;
}
int IsSuperPrime(int i){/*判断此数是否为超级素数函数*/
int j;
if(prime(i)==1){
do{
i=i/10;
if(prime(i)==0) return 0;
}
while(i>=10);
return 1;
}
else return 0;
}
void main()/*求100~9999之间所有的超级素数个数,和,及最大值*/
{
int i,spn=0,spm;
long sps=0;
for(i=101;i<=9997;i+=2)
if(IsSuperPrime(i)==1){
sps+=i;
spn++;
spm=i;
}
printf("sum=%ld,Total=%d,Max=%d",sps,spn,spm);
getch();
}