
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. 为什么啊。。。 展开
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. 为什么啊。。。 展开
2个回答
展开全部
这个是为了特例2而加的条件。同时也是s赋初值为1而不是0的原因!
追问
可是不加这个条件,对2没有影响,反而对 4 6 8 及其他非素数有影响啊?
你是指 s 是为了2而设定的。 我问的是后面的判断啊。。。
追答
我是值就 j>=i 是为了2设置的!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询