for(i=2;i
break;
else z=1;
return (z);
从 2 到 x/2 的过程中有一次 x%i != 0 的时候, z 就被设置成 1 了, 即使后面还有 x%i == 0 的情况, z 还是1. 拿 15 来说, i 为 2 的时候 x%i !=0, z 就被设置成 1 了.
试试下面的代码:
int sushu(int x)
{
int i;
for(i=2; i
return 0;
return 1; /* 没有在前面 return 0, 说明前面没遇到能整除的, 返回 1 */
}
貌似不是x/2,是开x的二次方根 用函数sqrt(x)、、、、、、
你怎么会用break了???
应该是continue吧
算了我放弃了 你里面好多错误、、、、、、
建议你温习下书
在提示一处return那不要用括号而且你的sushu函数返回值不是0就是1、建议你修改下
在看下书、
给你个简单易懂的参考程序
#include"stdio.h"
#include"math.h"
void main()
{
int i,k,j;
printf("请输入一个数:\n");
scanf("%d",&j);
k=sqrt(j);
for(i=2;i<=k;i++)
if(j%i==0) break;
if(i=k+1)
printf("%d是素数",j);
else printf("%d不是素数",j);
}
你试一下,可以调试成功。
for(i=2;i
break;
else z=1;
这段代码有问题{if(x%i==0)break;}是在for循环里面的,而else z=1;
是在for循环之外,所以else无法对应if。帮你改下
int sushu(int x)
{
int z=1,i;
for(i=2;i
if(x%i==0)
{z=0; break;}
}
return (z);
}
这里,for(i=2;i