下列程序的功能是:将大于整数m且紧靠m的k个被3除余1的素数存入数组xx。请编写函数num(int m,imt k,int xx[])实现程序的要求,最后调用函数readwriteDat()把结果输出到文件out.dat中。 例如:若输入17,5,则

admin2010-06-17  26

问题 下列程序的功能是:将大于整数m且紧靠m的k个被3除余1的素数存入数组xx。请编写函数num(int m,imt k,int xx[])实现程序的要求,最后调用函数readwriteDat()把结果输出到文件out.dat中。
   例如:若输入17,5,则应输出:19,31,37,43,61。
   部分源程序已给出。
   请勿改动主函数main()和输出数据函数readwriteDat()的内容。
   #include <conio.h>
   #include <stdio.h>
   void readwriteDat();
   void num(int m, int k, int xx[])
   {

   }
   main ( )
   {
      int m,n,xx[1000];
      clrscr();
      printf("\nPlease enter two integers:");
      scanf("  %d%d"  ,&m,&n);
      num(m,n,xx);
      for(m=0;m<n;m++)
      printf(" %d" ,xx[m]);
      printf("\n" );
      readwriteDat();
   }
   viod readwriteDat()
   {
     int m,n, xx[1000], i;
     FILE *rf,*wf;
     rf=fopen("in.dat"  ,"  r"  );
     wf=fopen(" out.dat"  ," w"  );
     for(i=0;i<10;i++){
         fscanf(rf,"  %d%d"  ,&m,&n);
         num(m,n,xx);
         for(m=0;m<n;m++)fprintf(wf," %d"  ,xx[m]
         fprintf(wf,"\n" );
   }
    fclose(rf);
    fclose(wf);
}

选项

答案int isP(int m) { int i; for ( i=2; i<m; i++) if(m % i==O)return 0; /*用小于m的所有整数去试除*/ /*除尽则m不是素数*/ /*此步有优化余地*/ return 1; } /*寻找满足条件的素数*/ void num(int m, int k, int xx[]) { int s=0; for (++m; k>0 ;m++) if (m%3==1 && isP(m) ) { xx[s++]=m; k--; } }

解析 类型:素数判断与运算。
关键点:素数判定。
求素数的题,可以先定义一个求素数的函数,然后在程序中直接调用,这样简单而且不容易出错。
原程序如果给了求素数的函数,可以直接调用。
转载请注明原文地址:https://kaotiyun.com/show/0IvZ777K
0

最新回复(0)