C语言 求素数问题if(s=1 && j>=i)

#include<stdio.h>main(){intx;ints;inta[10];inti,j,k=0;scanf("%d",&x);for(i=2;i<x;i++)... #include <stdio.h>
main()
{
int x;int s;int a[10];
int i,j,k=0;
scanf("%d",&x);
for(i=2;i<x;i++){
for(j=2;j<i;j++)
{ s=1;
if(i%j != 0)
{s=1;}
else
{s=0;break;}
}
if(s=1 && j>=i) a[k++]=i; //问题在这里,我不明白为什么判断条件要加上 && j>=i
}
for(i=0;i<k;i++)
printf(" %d ",a[i]);
system("pause");
}
程序目的是输出小于 x 的所有素数。。数组上限问题先不管。。。

程序中,s的值为1,表示 i 不能被 j 整除;s =0,表示可以。

如果判断语句为 if(s=1) a[k++]=i; 执行的情况是 s=1 的时候才把所得的 i(素数)存入数组。
我觉得条件不用加上 &&j>=i 啊。因为判断时 可以整除的话(不是素数),就执行s=0,然后break跳出小循环。所以只要不是素数 s 就为 0啊。可是不加那个条件,最后输出的结果就会是从2到x-1的所有整数。。这是为什么啊~~~~求教!!!

PS:不要换算法啊。。。就这个我不明白。。。求解释。。
if( s== 1) a[k++]=i;

= 改成 ==反而错误
这样子结果运行错误。。Run-Time Check Failure #3 - The variable 's' is being used without being initialized. 为什么啊。。。
展开
 我来答
Hellow小清
2014-03-30
知道答主
回答量:38
采纳率:0%
帮助的人:13万
展开全部
这个是为了特例2而加的条件。同时也是s赋初值为1而不是0的原因!
追问
可是不加这个条件,对2没有影响,反而对 4 6 8 及其他非素数有影响啊?

你是指 s 是为了2而设定的。 我问的是后面的判断啊。。。
追答
我是值就 j>=i 是为了2设置的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e43033c
2014-03-30 · TA获得超过1130个赞
知道小有建树答主
回答量:933
采纳率:100%
帮助的人:1010万
展开全部
s=1是赋值语句,应该是
s == 1
追问
改成 == 反而提示 
Run-Time Check Failure #3 - The variable 's' is being used without being initialized.
错误了。。。运行不了了。。。
追答
你定义的时候,初始化就行了,int s = 1;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式