使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中.编写函数fun(),其功能是求出小于或等于lim的所有素数,将其存放在aa数组中,并返回所求出的素数的个数。 注意:部分源程

admin2023-02-27  6

问题 使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中.编写函数fun(),其功能是求出小于或等于lim的所有素数,将其存放在aa数组中,并返回所求出的素数的个数。
    注意:部分源程序在文件pmg1.c中。
    请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。
试题程序:
1 #include<conio.h>
2 #include<stdio.h>
3 #include<stdlib.h>
4 #define MAX 100
5 int fun(int lim,int aa[MAX])
6 {
7
8 }
9 void main()
10 {
11   FILE *wf;
12   int limit,i,sum;
13  int aa[MAX];
14  system("CLS");
15  printf("输入一个整数:");
16  scanf("%d",&limit);
17  sum=fun(limit,aa);
18  for(i=0;i<sum;i++)
19  {
20    if (i%10==0&&i!=0)/*每行输出10个数*/
21    printf("\n");
22  printf("%5d",aa);
23   }
24 /*********found*********/
25  wf=fopen("out.dat","w");
26  sum=fun(15,aa);
27  for(i=0;i<sum;i++)
28  {
29    if(i%10==0&&i!=0)/*每行输出10个数*/
30    fprintf(wf,"\n");
31  fprintf(wf,"%5d",aa);
32  }
33  fclose(wf);
34 /*********found*********/
35 }

选项

答案 1 int fun(int lim,int aa[MAX]) 2 { 3 int i,j,k=0; 4 for(i=2;i<=lim;i++)/*求出小于或等于lim的全部素数*/ 5 {for(j=2;j<i;j++) 6 if(i%j==0)break; 7 if(j>=i) 8 aa[k++]=i;/*将求出的素数放入数组aa中*/ 9 } 10 return k;/*返回所求出的素数的个数*/

解析 如果一个数是合数,那么它的最小质因数肯定小于等于它的平方根。本程序使用for循环语句查找小于lim的所有数,使用内嵌的循环语句判断该数是否为素数。在做这道题时,需要重点掌握素数的判定方法:
    for(j=2;j<sqrt(j);j++)
    if(i%j==0)break;
    …
转载请注明原文地址:https://kaotiyun.com/show/7J0D777K
0

相关试题推荐
随机试题
最新回复(0)