#include <stdio.h> #include <math.h> #define NUM 50000000 typedef unsigned char BYTE; BYTE table[((NUM+1)>>3)+1]; void suShu() { int halfNum = (int)sqrt(1.0*NUM);//因数最大值 for( int k=2; k<=halfNum; k++ ) { if ((table[k>>3]&(1<<(k&7))) == 0) { for( int j=k*k; j<=NUM; j+=k) { table[j>>3] |= 1<<(j&7);//若为合数,数值变为1 } } } for( int l=2; l<=NUM; l++) { if ((table[l>>3]&(1<<(l&7))) == 0) { printf("%10d", l); } } printf("\n"); } int main() { suShu(); return 0; }
[培训]内核驱动高级班,冲击BAT一流互联网大厂工 作,每周日13:00-18:00直播授课