• 位数组实现用筛法(Sieve of Eratosthnes)计算素数


    //
    //  main.c
    //  bitarray
    //
    //  Created by Cheney Shen on 11-4-16.
    //  Copyright 2011年 __MyCompanyName__. All rights reserved.
    //
    
    #include <stdio.h>
    #include <limits.h>
    #include <string.h>
    #include <time.h>
    
    #define BITMASK(b)  (1 << ((b) % CHAR_BIT))
    #define BITSLOT(b)  ((b) / CHAR_BIT)
    #define BITSET(a, b)    ((a)[BITSLOT(b)] |= BITMASK(b))
    #define BITCLEAR(a, b)  ((a)[BITSLOT(b)] &= ~BITMASK(b))
    #define BITTEST(a, b)   ((a)[BITSLOT(b)] & BITMASK(b))
    #define BITNSLOTS(nb)    ((nb + CHAR_BIT - 1) / CHAR_BIT)
    
    #define MAX 100000
    
    int main (int argc, const char * argv[])
    {
        char bitarray[MAX];
        int i, j;
        time_t  start, end;
        memset(bitarray, 0, BITNSLOTS(MAX));
        
        time(&start);
        printf("It's %s\n", ctime(&start));
        for (i = 2; i < MAX; i++) {
            if(!BITTEST(bitarray, i)) {
                printf("%d\t", i);
                for (j = i<<1; j < MAX; j += i)
                    BITSET(bitarray, j);
            }
        }
        time(&end);
        printf("\n");
        printf("Now it's is %s", ctime(&end));
        return 0;
    }
    
  • 相关阅读:
    类加载,初始化
    jvm classLoader architecture
    只选择年份的下拉菜单
    spring框架学习(二)依赖注入
    spring框架学习(一)
    JSP 过滤器
    JSP9个内置对象
    JSP 动作元素
    众数
    基于excel9.h的excel处理
  • 原文地址:https://www.cnblogs.com/shenfei2031/p/2017681.html
Copyright © 2020-2023  润新知