大家都来看看!!
看到用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();
}
这样就可以得到结果了!也不知道那种方法好,还请各位大牛答疑解惑啊,如果大家还有更好的程序代码,能否发上来看看,学习一下!!









