素数又称质数,指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。因此素数为非负整数。
本文实现了一种求小于或等于整数number的素数的方法,使用C语言实现。
以下为C代码实现:
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 5 6 //求小于或等于number的素数 7 int primenumber(int number) 8 { 9 int ii = 0, jj = 0; 10 int pnumber = 0; 11 int pncount = 0; 12 int* pnumarray = NULL; 13 14 pnumarray = (int*)malloc(number*sizeof(int)); 15 if(!pnumarray) 16 { 17 printf("Error: Fail to malloc pnumarray!\n"); 18 return -1; 19 } 20 for(ii=1; ii<number; ii++) 21 { 22 pnumber = ii+1; 23 jj = 0; 24 while(jj<pnumber) 25 { 26 if((pnumber/(jj+1)*(jj+1) == pnumber) && ((jj+1) != 1) && ((jj+1) != pnumber)) 27 { 28 break; 29 } 30 else 31 { 32 jj++; 33 } 34 } 35 if(jj == pnumber) 36 { 37 pnumarray[pncount] = pnumber; 38 printf("pnumber<%d>:[%d]\n", pncount, pnumber); 39 pncount++; 40 } 41 } 42 free(pnumarray); 43 44 return pncount; 45 } 46 47 int main() 48 { 49 int pnumber = 3*3*3*3*3; 50 int pncnt = 0; 51 printf("pnumber is [%d]\n", pnumber); 52 pncnt = primenumber(pnumber); 53 printf("The total primenumber is [%d]\n", pncnt); 54 55 return 0; 56 }
本文的实现为基本实现,没有做优化,后面有时间再考虑进一步优化实现。