一个送分的二级C问题。

来源:百度知道 编辑:UC知道 时间:2024/05/10 10:52:22
下面函数fun()主要是求大于m且仅靠们的k个非负数存入数组xx[]
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
void fun(int m,int k,int xx[])
{
int i,j=0;
while(j<k)
{
m++;
for(i=2;i<m;i++)
if(m%i==0)
{
xx[j++]=m;
break;
}
}
}
void main()
{
int m,n,zz[1000];
printf("\nPlease enter two intergers:");
scanf("%d%d",&m,&n);
fun(m,n,zz);
for(m=0;m<n;m++)
printf("%d",zz[m]);
printf("\n");
}
我编的上面这个程序本身没问题,但是运行的时候没有结果。
请大家帮我改一下,只改fun函数里的内容。最好要用到while循环。

你错误的根源在于擅自改变了m的值,使得内循环每次所针对的m值都不一样,那这样怎么能得到合适的结果.
void fun(int m,int k,int xx[])
{ int i=m+1,j,n=0;
while(n<k) /*大于m的素数,循环k次,即找出紧靠m的k个素数,这块最好用for循环*/
{ for(j=2;j<i;i++)/*判断是否为素数,如果不满足条件跳出循环*/
if(j%i==0) break;
if(j>=i) xx[n++]=i;
}
i++;/*取下一个数*/
}
}