C语言求超级素数

Python014

C语言求超级素数,第1张

给你个完整的:

#include<stdio.h>

int isprim(int n)

{

int i

if (n<2) return 0

for (i=2 i*i<=n ++i)

if (n%i==0) return 0

return 1

}

int isssp(int n)

{

if (!isprim(n)) return 0

while (n/10)

if (!isprim(n/=10)) return 0

return 1

}

int main()

{

int i

int cnt=0

int maxp

printf("从100-9999的超级素数有:\n")

for (i=100 i<10000 ++i)

{

if (isssp(i))

{

++cnt

maxp=i

printf("%8d", i)

if (cnt%5==0)

printf("\n")

}

}

printf("\n总共有:%d个\n", cnt)

printf("最大的是:%d\n", maxp)

return 0

}

超级素数是指从个位起删除0位、1位、2位……直到只剩最后1位都是素数的十进制正整数。可以自定义一个素数判断函数,对某一正整数n及从个位起每删除1位的新数逐一进行判断,都是素数的则是题解。以下代码先要求输入正整数n,输出2~n之间的所有超级素数:

#include "stdio.h"

int prime(int n){//判断素数,素数返回0,否则返回1

int i

if(n>2 && !(n&1) || n<2)

return 1

for(i=3i*i<=ni+=2)

if(!(n%i))

return 1

return 0

}

int main(int argc,char *argv[]){

int n,i,t

printf("Input n(int n>1)...\nn=")

if(scanf("%d",&n)!=1 || n<2){

printf("Input error, exit...\n")

return 0

}

for(i=2i<=ni++){

for(t=itt/=10)//从低位删除0位,1位...直到只剩1位都是素数的为超级素数

if(prime(t))

break

if(!t)

printf("%d ",i)

}

printf("\n")

return 0

}

运行样例如下:

一个素数,依次从最高位去掉一位,两位……若得到的都是素数,且各数字不为0,则称为超级素数。 /*TC2.0调试*/ #include "stdio.h" #include "math.h" int prime(int i){/*判断是否为素数*/ int j if(i==1) return 0 for(j=2j<=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=101i<=9997i+=2) if(IsSuperPrime(i)==1){ sps+=i spn++ spm=i } printf("sum=%ld,Total=%d,Max=%d",sps,spn,spm) getch() }

记得采纳啊