看看我的C语言求素数那里错了???

来源:百度知道 编辑:UC知道 时间:2024/05/25 11:18:24
#include"stdio.h"
#include"math.h"
int x(int a)
{
int i;
for(i=2;i<sqrt(a;)i++)
if(a%i==0)
return(0);
else
return(1);
}
main()
{
int n,i;
clrscr();
scanf("%d",&n)
for(i=2;i<n;i++)
if(x(i)==1)
printf("%5d",i);
}
我用TC运行该程序后,我输入数字“10”,程序运行结果为“5 7 9”
我的问题在于“9”这个数字为什么会被显示出来???是不是我设计的算法有问题,还是编写有漏洞???请大家指教一下。。

vc下的操作
void main()
{
double x,s;
printf("请输入一个数\n");
scanf("%ld",&x);
for(s=2;s<=sqr(x);s++)
if(x%s==0)
printf("%ld不是一个素数\n",x)
printf("%ld是一个素数",x);
}

下面是我你的程序的修改(在c++下调试通过)
#include"stdio.h"
#include"math.h"
#include"windows.h"//如果你用的tc将这段去掉,并将system("cls")改成clrscr()就可以了

int x(int a)
{
int i;
int flag=1;//首先认为是一个素数
for(i=2;i<=sqrt(a);i++)
if(a%i==0){
flag=0;
break;
}
return flag;
}

void main()
{
int n,i;
system("cls");//clrscr().这个是turbo C 中的库函数,包含在<conio.h>,不过如果你是C++,那这个函数就用不了了,得自己写一个。
scanf("%d",&n);
for(i=2;i<n;i++)
if(x(i)==1)
printf("%5d",i);
printf("\n");
}

#include"stdio.h