求素数序列

来源:互联网 发布:linux服务器硬盘测试 编辑:程序博客网 时间:2024/05/23 00:04

今天看了下 《算法与设计基础》,表示这本书比《算法导论》好读点。

1.1节讲的是素数问题,最后讲到一个埃拉托色尼筛法,伪代码在书上讲到了,原理就是:从2到sqart(n)内遍历,把是当前数组值的倍数的value都设为0.

我编码实现了:

#include "stdio.h"#include "math.h"void GetSieve(int arr[], int size){for(int i=2; i < size; ++i){arr[i] = i;}for(int j=2;j<sqrt(float(size));++j){const int value = arr[j];if( value != 0){for(int p=value;p<size;){arr[p]=0;p += value;}}}}int main(){int arr[100];const int size = sizeof(arr)/sizeof(*arr);GetSieve(arr,size);for(int i=2;i<size;++i){if(arr[i] != 0){printf("%d ",arr[i]);}}}


原创粉丝点击