请问这个判断 素数的代码有错吗???? (C语言问题!!! )

来源:百度知道 编辑:UC知道 时间:2024/05/10 08:09:24
#include<stdio.h>
void main()
{
int i,X,y=1;
scanf(”%d”,&x);
for(i=2;i<=x/2;i++)
if( x%i==0 )

y=0;
break;
}
printf(”%d\n”,y);
}
一个判断 输入的 X 是不是素数的代码!!!!! 有错吗?????
C 语言中 判断是不是 素数 有几种方法?????

回复: jackys2007
for(i=2;i<=x/2;i++) 与 for(i=2;i<=sqrt(x);i++)
里的条件有什么不同???????

for(i=2;i<=x/2;i++)
不是取中间数,是取sqrt

你无视我呀~~~受不了。。。。哭了。。。。

int i,X,y=1;注意大小写
其他的没什么问题了

你的代码里有很多中文输入法下的字符,
比如scanf那的双引号,还有那个&
在英文输入下重写一下,应该没问题了
另外这一句:
for(i=2;i<=x/2;i++)
建议改为
#include <math.h>
for(i=2;i<=sqrt(x);i++)

补充:for(i=2;i<=x/2;i++) 与 for(i=2;i<=sqrt(x);i++) 与for(i=2;i<x;i++)
在条件上没有什么不同,其程序运行结果都是一样的,使用for(i=2;i<=sqrt(x);i++) 与for(i=2;i<=x/2;i++)只是在时间上节省了系统运行时间!即优化了程序的时间复杂度,注意:i<=sqrt(x)与i<=x/2;其实是一样的,都是求平方取整

#include<stdio.h>
void main()
{
int i,X,y=1;
scanf(”%d”,&x);/*符号注意中英文输入状态scanf("%d",&x);*/
for(i=2;i<=x/2;i++) /*这里可以写成for (i=2;i<x;i++)就行了*/
if( x%i==0 )

y=0;
break;
}
printf(”%d\n”,y);/*"" %d*/
}
其它方法有函数,标识法等!

没有错误,见意把for(i=2;i<=x/2;i++)改成for(i=2;i<=sqrt(x);i++)这样循环就够用了,这样循环范围小;
用这个的话把文件头改下include<math.h>

看我的