求高手指教! C语言中求100-9999之内的超级素数个数!

2024年12月04日 01:25
有3个网友回答
网友(1):

/*TC2.0调试成功*/  
 #include "stdio.h"  
 #include "math.h"   /*判断是否为素数*/  
 int IsPrime(long number);   /*判断此数是否为超级素数函数*/  
 int IsSuperPrime(long number);   /*求100~9999之间所有的超级素数个数,和,及最大值*/   void main()   
{   long spn = 0;   
long spm = 0;  
 long sps = 0;  
 for( long 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);   
getchar();   }   /*判断是否为素数*/  
 int IsPrime(long number)  
 {   if(number==1)   {   return 0;   }  
 for(int j=2; j<=sqrt(double(number)); j++)  
 {   if(number%j==0)   
{   return 0;  
 }  
 }  
 return 1;  
 }   /*判断此数是否为超级素数函数*/  
 int IsSuperPrime(long number)  
 {  
 if(IsPrime(number)==1)  
 {  
 do{   
number=number/10;  
 if(IsPrime(number)==0)  
 {   return 0;   }  
 }   while(number>=10);  
 return 1;  
 }   
else   {   return 0;   }  
 }

网友(2):

#include
#include
#include
int f(int x)
{
int j,m,n;
m=(int)sqrt(x);
for(j=2;j<=m;j++)
{
if(x%j==0)
break;
}
if(j==m+1)
n=x;
else
n=0;
return n;
}
int g(int y)
{
int a,b;
if(y!=0)//这里多了个(
{
for(;y!=0;y=y/10)
{
a=f(y);
if(a==0)
break;
}
if(y==0)
b=1;
else
b=0;
}
else
b=0;
return b;
}
main()
{
int x1,x2,x3,sum=0;
clrscr();//如果这里说 clrscr不认识的话 就改成system("cls");
for(x1=101;x1<=9999;x1=x1+2)
{
x2=f(x1);
x3=g(x2);
if(x3==1)
sum++;
}
printf("The total is %d.",sum);
getch();
}

网友(3):

不懂C,学的C++,不好意思。。