将大于整数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++;
}
}
----------------解决方案--------------------------------------------------------
将大于整数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)我实在不明白他是要干什么。
----------------解决方案--------------------------------------------------------
将大于整数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>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++;
}
}
----------------解决方案--------------------------------------------------------