C语言 fun

来源:百度知道 编辑:UC知道 时间:2024/06/19 15:29:15
请编写函数fun,函数的功能是:将大于形参m且紧靠m的k个素数存入xx所指
的数组中。例如,若输入17, 5,则应输出:19, 23, 29, 31, 37。
注意: 部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入

你编写的若干语句。

void fun(int m, int k, int xx[])
{

}
main()
{ int m,n,zz[1000];
printf("\n please enter two integers: ");
scanf("%d%d",&m,&n);
fun( m,n,zz);
for(m=0; m<n; m++)
printf("%d ", zz[m]);
printf("\n");
}

答案:

int i,j=0,p=m+1;
do
{for( i=2; i<p; i++)
if(p%i==0) break;
if(i>=p) xx[j++]=p;
p++;
} while(j<k);

ps;我现在求的是详细的说明过程~~急用~~越详细越好~~~
要是觉得别人的答案,你给不出说明,那就把你的答案写出来,但是也必须有详细的解析过程。

只能被1或者本身整除的数,称之为素数。
要输出大于形参m且紧靠m的k个素数,基本的算法如下

1 从形参m的下一个数开始,判断此数是否为素数
如:m=17 则从18开始,判断18是否为素数,18不是,则加1,判断19,依次类推。

2 参数p是否为素数的判断方法
定义一个变量i,数值从2开始,用p除以i,取余数(p%i)。如果余数为0,说明p能被i整除,如果i不是一个小于p的数,那么说明p不是素数。
如:i=2,p=18,
p%i=0 也就是18能被2整除,所以18不是素数。

3 定义一个循环,到输出个数k为止,重复上述过程。

程序说明如下:
int i,j=0,p=m+1;
do
{
// 以下程序判断是否为素数
for( i=2; i<p; i++)
if(p%i==0) break;

// 除数i大于p,说明p是素数
if(i>=p) xx[j++]=p;

// 测试下一个被除数
p++;
} while(j<k); // 到输出个数为止,重复上述过程

是只讲答案的这个fun函数么?

int i,j=0,p=m+1;
do //当while(j<k)时执行该程序块,即当
//输出的数不够应该输出的数量时
{for( i=2; i<p; i++) //设定一个被除数i
if(p%i==0) break; //当该数p被i整除了(它就不是素数了)执行下一次循环
if(i>=p) xx[j++]=p; //当除数i已经比p大了,p是素数了,存入xx数组
p++; //测试下一个被除数
} while(j<