所属年份:2011.3;2011.9
编写函数int fun(int lim, int aa[MAX]),其功能是求出小于或等于lim的所有素数并放在aa数组中,并返回所求出的素数的个数。
#include<conio.h> #include<stdio.h> #include<stdlib.h> #define MAX 100 int fun(int lim, int aa[MAX]) { } void main() { FILE *wf; int limit,i,sum; int aa[MAX]; system("CLS"); printf("输入一个整数:"); scanf("%d",&limit); sum=fun(limit,aa); for(i=0;i<sum;i++) { if(i%10==0&&i!=0) /*每行输出10个数*/ printf("\n "); printf("%5d ",aa[i]); } /******************************/ wf=fopen("out.dat","w"); sum=fun(15,aa); for(i=0;i<sum;i++) { if(i%10==0&&i!=0) /*每行输出10个数*/ fprintf(wf,"\n"); fprintf(wf,"%5d ",aa[i]); } fclose(wf); /*****************************/ }
【解题思路】
本程序使用for循环语句查找小于lim的所有数,使用内嵌的循环判断语句判断该数是否为素数。在做这道题时,需要重点掌握素数的判定方法:
for(j=2;j<i;j++) if(i%j==0) break; …
【参考答案】
int fun(int lim, int aa[MAX]) { int i,j,k=0; for(i=2; i<=lim; i++) /*求出小于或等于lim的全部素数*/ { for(j=2; j<i; j++) if (i%j==0) break; if (j>=i) aa[k++]=i; /*将求出的素数放入数组aa中*/ } return k; /*返回所求出的素数的个数*/ }