30. 数据结构笔记之三十数组之厄拉多塞筛
2017-09-20 21:29
295 查看
30. 数据结构笔记之三十数组之厄拉多塞筛
“勤劳远比黄金可贵。 --
萨迪”
PS:质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被整除以其他自然数(质数),换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。
代码中N表示求多少数内的素数。
#include"malloc.h"
#defineN10000
void main()
{
inti,j,a[N+1];
//初始化为1
for(i=2;i<N+1;i++)
a[i]=1;
for(i=2;i<N+1;i++)
if(a[i])
for(j=i;j<=N/i;j++)a[i*j]=0;
//输出
for(i=2;i<N;i++)
if(a[i])
printf("%4d ",i);
printf("\n");
}
“勤劳远比黄金可贵。 --
萨迪”
1. 厄拉多塞
厄拉多塞是一位古希腊数学家,他在寻找素数时,采用了一种与众不同的方法:先将2-N的各数放入表中,然后在2的上面画一个圆圈,然后划去2的其他倍数;第一个既未画圈又没有被划去的数是3,将它画圈,再划去3的其他倍数;现在既未画圈又没有被划去的第一个数是5,将它画圈,并划去5的其他倍数……依次类推,一直到所有小于或等于N的各数都画了圈或划去为止。这时,表中画了圈的以及未划去的那些数正好就是小于 N的素数。PS:质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被整除以其他自然数(质数),换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。
2. 代码实现
运行如下:代码中N表示求多少数内的素数。
2.1 源码
#include"stdio.h"#include"malloc.h"
#defineN10000
void main()
{
inti,j,a[N+1];
//初始化为1
for(i=2;i<N+1;i++)
a[i]=1;
for(i=2;i<N+1;i++)
if(a[i])
for(j=i;j<=N/i;j++)a[i*j]=0;
//输出
for(i=2;i<N;i++)
if(a[i])
printf("%4d ",i);
printf("\n");
}
相关文章推荐
- 29、数据结构笔记之二十九数组之硬币抛掷模拟
- 1.[数据结构和算法分析笔记]数组
- 18考研-数据结构复习笔记-栈,队列,数组
- 数据结构之数组 笔记
- 【数据结构与算法学习笔记】PART3 线性结构(除向量外,数组、栈、队列、链表)
- 数据结构与算法学习笔记之 从0编号的数组
- php学习笔记数组与数据结构1(日期时间函数及遇到的问题解决)
- C++学习笔记2--函数重载 复杂的数据 内存对齐 指针数组 结构与指针 传值传址传引用 联合枚举类型别名
- #数据结构与算法学习笔记#剑指Offer1:二维数组中的查找(JAVA)
- php学习笔记数组与数据结构1(数组)
- 数据结构笔记(3)数组的算法
- 27、数据结构笔记之二十七数组的定义和概念
- 28、数据结构笔记之二十八数组之矩阵
- Java之数据结构基础、线性表、栈和队列、数组和字符串,树—学习笔记
- 数据结构与算法学习笔记——链表部分实现(数组形式)
- WebGL笔记(五):封装顶点和颜色等数组数据(二)
- 数据结构笔记——绪论
- (笔记)Mysql命令desc:获取数据表结构
- 数据结构之数组(上)
- 基础数据结构之数组与链表(五)