大家都来看看!!
看到用Eratosthenes筛选法求质数时,《c和指针》这本书上给了一个答案,我看了半天,也没看懂个大概,还请哪位高手帮解释一下!程序代码:
#include <stdlib.h> #define SIZE 1000 #define TRUE 1 #define FALSE 0 int main() { char sieve[ SIZE ]; char *sp; int number; for( sp = sieve; sp < &sieve[ SIZE ]; ) *sp++ = TRUE; for( number = 3; ; number += 2 ){ sp = &sieve[ 0 ] + ( number – 3 ) / 2; if( sp >= &sieve[ SIZE ] ) break; while( sp += number, sp < &sieve[ SIZE ] ) *sp = FALSE; } printf( "2\n" ); for( number = 3, sp = &sieve[ 0 ]; sp < &sieve[ SIZE ]; number += 2, sp++ ){ if( *sp ) printf( "%d\n", number ); } return EXIT_SUCCESS; }希望能讲解详细点!可是这样一个题,我自己写了一个,感觉很简单,贴出来看看!!
程序代码:
#include <stdio.h> int main(void) { int a[1000]; int i; for(i=2;i<1000;i++) a[i]=i; printf("\n"); for(i=4;i<1000;i+=2) a[i]=0; for(i=3;i<1000;i+=3) a[i]=0; for(i=5;i<1000;i+=5) a[i]=0; i=0; while(i<1000) { if(a[i]!=0) printf("%4d",a[i]); i++; } getch(); }
这样就可以得到结果了!也不知道那种方法好,还请各位大牛答疑解惑啊,如果大家还有更好的程序代码,能否发上来看看,学习一下!!