当前位置: 代码迷 >> C语言 >> [原创] 循环嵌套
  详细解决方案

[原创] 循环嵌套

热度:223   发布时间:2006-03-14 14:37:00.0
[原创] 循环嵌套

将大于整数m且紧靠m的k个素数存入数组xx
void num(int m, int k, int xx[])
{int data=m+1;
int half;
int n=0;
int I;
while(1)
{ half=data/2;
for(I=2;I<=half;I++)
if(data%I==0)
break;
if(I>half) 这里是什么意思呢?前面不是已经规定 I<=half 了么?
{xx[n]=data;
n++;}
if(n>=k)
break;
data++;
}
}

搜索更多相关的解决方案: 嵌套  素数  int  data  

----------------解决方案--------------------------------------------------------
以下是引用redalert在2006-3-14 14:37:00的发言:

将大于整数m且紧靠m的k个素数存入数组xx
void num(int m, int k, int xx[])
{int data=m+1;
int half;
int n=0;
int I;
while(1)
{ half=data/2;
for(I=2;I<=half;I++)
if(data%I==0)
break;
if(I>half) 这里是什么意思呢?前面不是已经规定 I<=half 了么?
{xx[n]=data;
n++;}
if(n>=k)
break;
data++;
}
}


我也没看懂是什么意思,但是好像永远也不会执行到if里面的语句啊!
是不是程序有误?


----------------解决方案--------------------------------------------------------
我不知道这道题解是什么意思。其实里面有好几个语句我都不明白。
它里面用了一个while(1)我实在不明白他是要干什么。
----------------解决方案--------------------------------------------------------
以下是引用redalert在2006-3-14 14:37:00的发言:

将大于整数m且紧靠m的k个素数存入数组xx
void num(int m, int k, int xx[])
{int data=m+1;
int half;
int n=0;
int I;

half=data/2;// while 是每用的//
for(I=2;I<=half;I++)
if(data%I==0) break;

if(I>half) //这是从上面的I++过来的.如果I>HALF 那么 代表I没有被任何数整除//
{xx[n]=data;
n++;}
if(n>=k)
break;
data++;
}
}


[此贴子已经被作者于2006-3-14 15:07:25编辑过]


----------------解决方案--------------------------------------------------------
楼上说得对!
刚才没注意看呢..
----------------解决方案--------------------------------------------------------
谢谢啦,我终于看明白了。我个人认为,其实那个 if(I&gt;half)这个条件好象仅仅就是要引出下面的赋值。
----------------解决方案--------------------------------------------------------
判断程序的流程。
是break出来的,还是从for里面跳出的。
----------------解决方案--------------------------------------------------------
其实我觉得还有一个错误
就是for引导的是一个复合语句(在这个函数里面)所以应该再加一个大括号在for的后面。
然后就是我看这个函数是一定要有一个返回植的,所以应该再加一个return语句
----------------解决方案--------------------------------------------------------
FOR下面的内容可能是只包括if(data%I==0)吧
----------------解决方案--------------------------------------------------------

将大于整数m且紧靠m的k个素数存入数组xx
void num(int m, int k, int xx[])
{int data=m+1;
int half;
int n=0;
int I;
while(1) ----------------------> 这里WHILE多余,不管怎么样都进入循环
{ half=data/2;
for(I=2;I<=half;I++) /*for循环用来判断一个数是不是素数,是就退出while循环*/
if(data%I==0)
break;
if(I>half) /*不管data是不是素数I进行拉I++,这个if语句用来接受一个数
{xx[n]=data; 是不是素数,如果I>half,那么就是*/
n++;}
if(n>=k)
break;
data++;
}
}


----------------解决方案--------------------------------------------------------
  相关解决方案