标签:
求1-10000之间的素数,并打印出来。
使用了sbrk和brk函数,采用直接操作内存的方式,尽量减少循环次数,每次进行素数判断仅与之前的素数进行相除。该代码并不健壮,仅作练习用。
#include <stdio.h> #include <stdlib.h> #include <unistd.h> int *p; int Primer(int a,int *size); main() { int a=10000; int size; p=sbrk(0); Primer(a,&size); int i=0; for(;i<size;i++) { printf("%d\n",p[i]); } } int Primer(int a,int *size) { int i=0; int *r; int sizePr; if(a<4) { *size=a; r=p; for(;i<a;i++) { brk(r+1); *r=i+1; r=sbrk(0); } } else { Primer(3,&sizePr); int j=4; for(;j<=a;j++) { int si=1; r=&p[sizePr]; int c=0; for(;si<sizePr;si++) { if(j%p[si]==0) { c=1; break; } } if(c==0) { brk(r+1); *r=j; r=sbrk(0); sizePr++; } } *size=sizePr; } printf("Primer:%p\n",p) ; return 0; }
标签:
原文地址:http://www.cnblogs.com/fastcam/p/4794303.html