Chinaunix首页 | 论坛 | 博客
  • 博客访问: 388883
  • 博文数量: 55
  • 博客积分: 1907
  • 博客等级: 上尉
  • 技术积分: 869
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-04 19:30
文章分类

全部博文(55)

文章存档

2011年(32)

2010年(23)

分类: C/C++

2010-11-28 19:11:37

/*
 * Sieve of Dratosthense -- compute prime numbers using a bit array
 * 2010-11-20
 */
 

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include "bitarray.h"    // 在第五章编程练习中开发的位数组函数


#define        MAX_VALUE        10000
#define        MAX_BIT_NUMBER        ( ( MAX_VALUE - 3 ) / 2 )
#define        SIZE            ( MAX_BIT_NUMBER / CHAR_BIT + 1 )

int main(void)
{
    char    sieve[ SIZE ];
    int        number;
    int        bit_number;
    char    *sp;

    for( sp = sieve; sp < &sieve[ SIZE ]; )
        *sp++ = 0xff;

    for( number =3; number <= MAX_VALUE; number += 2 )
    {
        bit_number = ( number - 3 ) / 2;

        if( !test_bit( sieve, bit_number ) )
            continue;
    }

    printf( "2\n" );
    for( bit_number = 0,number = 3;
        number <= MAX_VALUE;
        bit_number += 1, number += 2 )
    {
        if( test_bit( sieve, bit_number ) )
            printf( "%d\n", number );
    }

    return EXIT_SUCCESS;
}


阅读(1355) | 评论(0) | 转发(0) |
0

上一篇:指针之6.4

下一篇:指针之6.6

给主人留下些什么吧!~~