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

以下是我的程序,但是不知道哪里出了问题。#include<stdio.h>#include<conio.h>#include<math.h>intf(intx){intj... 以下是我的程序,但是不知道哪里出了问题。
#include<stdio.h>
#include<conio.h>
#include<math.h>
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();
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();
}
展开
 我来答
erchowyo
2012-05-07 · TA获得超过250个赞
知道小有建树答主
回答量:113
采纳率:0%
帮助的人:78.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;   }  
 }
追问
额,好厉害,谢谢你的答案。嗯,不过我很好奇我的程序到底是哪里出问题了,能帮我看一下吗?
zsx10110
2012-05-06 · TA获得超过8872个赞
知道大有可为答主
回答量:2369
采纳率:66%
帮助的人:3071万
展开全部
#include<stdio.h>
#include<conio.h>
#include<math.h>
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();
}
追问
额............前面的那个)是我手误了,清屏函数没有问题,在程序倒是能够出来一个结果,但是不是正确的结果,正确的应该是30,但是我得到的结果是52.不明白哪里错了。还请高手继续指教。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
墨派638
2012-05-06 · TA获得超过288个赞
知道答主
回答量:192
采纳率:0%
帮助的人:118万
展开全部
不懂C,学的C++,不好意思。。
追问
同样感谢,呵呵。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式