求高手指教! 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();
} 展开
#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();
} 展开
展开全部
/*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; }
}
#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; }
}
追问
额,好厉害,谢谢你的答案。嗯,不过我很好奇我的程序到底是哪里出问题了,能帮我看一下吗?
展开全部
#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();
}
#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.不明白哪里错了。还请高手继续指教。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不懂C,学的C++,不好意思。。
追问
同样感谢,呵呵。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询