所属年份:2012.3
请编写一个函数void fun(int m, int k, int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入所指的数组中。
例如,若输入17,5,则应输出19、23、29、31、37。
#include <conio.h> #include <stdio.h> #include <stdlib.h> void fun(int m,int k,int xx[]) { } void main() { FILE *wf; int m,n,zz[1000]; system("CLS"); printf("\nPlease enter two integers: "); scanf("%d%d",&m,&n); fun(m, n, zz); for(m=0;m<n;m++) printf("%d ",zz[m]); printf("\n "); /******************************/ wf=fopen("out.dat","w"); fun(17,5,zz); for(m=0;m<5;m++) fprintf(wf,"%d ",zz[m]); fclose(wf); /*****************************/ }
【解题思路】
本题主要考查素数的判定方法,如果一个数不能被除了1和其自身以外的数整除,则这个数为素数。本程序使用循环语句控制需要判断的数,在循环体中判断该数是否为素数,若是则存入数组xx中。
【参考答案】
void fun(int m,int k,int xx[]) { int i,j,n; for(i=m+1,n=0;n<k;i++) /*找大于m的素数,循环k次,即找出紧靠m的k个素数*/ {for(j=2;j<i;j++) /*判断一个数是否为素数,如果不是,跳出此循环,判断下一个数*/ if(i%j==0) break; if(j>=i) /*如果是素数,放入数组xx中*/ xx[n++]=i; } }