这两个 为什么运行后不一样呢

来源:百度知道 编辑:UC知道 时间:2024/06/19 03:35:05
int fun(int mm,int b[MAX])
{int k=0,i,j;
for(i=mm;i>1;i--)
{
for(j=2;j<i;j++)
if(i%j!=0)
{b[k]=i;
k++;}
}
return k;

}

int fun(int mm,int b[MAX])

int k=0,i,j;
for(i=mm;i>1;i--)
{for(j=2;j<i;j++)
if(i%j==0)
break;
else
continue;
if(j>=i)
{b[k]=i;
k++;}
}
return k++;
求出小于或等于mm的所有素数,放在b数组中,该函数返回所求出的素数个数

运行后的值为什么不一样呢?帮帮我!谢谢大家

本来就不一样
for(j=2;j<i;j++)
if(i%j!=0)
{b[k]=i;
k++;}

下面这个 第一次i%j ==0 时 就跳出了循环
而上面哪个要计算所有j小于i的数

for(j=2;j<i;j++)
if(i%j==0)
break;
else
continue;

比如当i=5时,假设k=0;
第一个会计算出 b[0] = 5; b[1] = 5; b[2] = 5;

而第而个计算出 b[0] = 5;

把你程序的目的说出来
大家回很快看明白你的程序
不要浪费大家的时间

就你的函数目的而言,第一个是错的,第二个是正确的。

逻辑关系的问题,自己好好想想就明白了。