P093 将大于整数m且紧靠m的k个素数存入数组 ★★

03-程序设计题 软件121, 唐鼎威 1099浏览

所属年份: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;
    }
}