zoukankan      html  css  js  c++  java
  • 厄拉多塞筛

    若i为素数,则设置a[i]为1;反之则设置为0.

    首先,将所有数组的元素设置为1,表示没有已知的非素数。然后将已知为非素数(即为已知素数的倍数)的索引对应的数组元素设置为0。如果将所有较小的素数的倍数都设置为0之后,a[i]仍然保持为1,则可判断它是所找的素数。

     1 #include<stdio.h>
     2 #define N 10000
     3 int main()
     4 { int i, j, a[N];
     5     for (i = 2; i < N; i++) a[i] = 1;
     6     for (i = 2; i < N; i++)
     7       if (a[i])
     8         for (j = i; j < N/i; j++) a[i*j] = 0;
     9     for (i = 2; i < N; i++)
    10       if (a[i]) printf("%4d ", i);
    11     printf("\n");
    12     return 0;
    13 }

     因为程序使用一个数组来包含最简单元素类型,0和1两个值,如果我们使用位的数组,则可以获得更高的空间有效性。

    而且,如果N庞大,一些编程环境可能要求数组为全局,或是可以动态分配它。

    1 #include <stdlib.h>
    2 main(int argc, char *argv[])
    3   { long int i, j, N = atoi(argv[1]);
    4     int *a = malloc(N*sizeof(int));
    5     if (a == NULL) 
    6       { printf("Insufficient memory.\n"); return; }
    7     ...
  • 相关阅读:
    CentOS查找目录或文件
    vim使用
    解决Bat脚本中包含中文,运行乱码
    Window系统下搭建GIT本地服务器
    Django1.6 运行manage.py 报错解决办法(ImportError)
    centos7下使用yum安装pip
    hiho_1048_状态压缩2
    hiho_1044 状态压缩
    hiho_1041 国庆出游
    hdu_3555 bomb
  • 原文地址:https://www.cnblogs.com/xueda120/p/3077633.html
Copyright © 2011-2022 走看看