题目:判断小于lim的素数有哪些
只需被 2 ~ i \sqrt{i} i之间的每一个整数去除就可以了。如果i不能被 2 ~ 间任一整数整除,这个i必定是素数。例如判别17是是否为素数,只需使17被2~4之间的每一个整数去除,由于都不能整除,可以判定17是素数。
#include <stdio.h>
#include <math.h>
#define MAX 100
int fun(int lim, int aa[MAX]){
int i,j,num=1;
aa[0]=1;
for(i=2;i<=lim;++i){
for(j=2;j <= (int)sqrt((double)i);++j){
if(i%j == 0) break;
}
if(j>(int)sqrt((double)i)) aa[num++]=i;
}
return num;
}
int main(void){
int limit, i, sum;
int aa[MAX] ;
printf("输入一个整数:");
scanf("%d", &limit);
sum=fun(limit, aa);
for(i=0 ; i < sum ; i++) {
if(i % 10 == 0 && i != 0) printf("\n") ;
printf("%5d", aa[i]) ;
}
printf("\ntotal=%d\n",sum);
getchar();
return 0;
}