博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
厄拉多塞筛(C语言)
阅读量:4879 次
发布时间:2019-06-11

本文共 758 字,大约阅读时间需要 2 分钟。

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

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

 #include<stdio.h>

#define
 N 10000
int
 main()
int
 i, j, a[N];
    
for
 (i 
=
 
2
; i 
<
 N; i
++
) a[i] 
=
 
1
;
    
for
 (i 
=
 
2
; i 
<
 N; 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
"
);
    
return
 
0
;
}

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

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

 #include <stdlib.h>

main(
int
 argc, 
char
 
*
argv[])
  { 
long
 
int
 i, j, N 
=
 atoi(argv[
1
]);
    
int
 
*
=
 malloc(N
*
sizeof
(
int
));
    
if
 (a 
==
 NULL) 
      { printf(
"
Insufficient memory.\n
"
); 
return
; }
    ...

转载于:https://www.cnblogs.com/cpoint/archive/2011/04/25/2028772.html

你可能感兴趣的文章
Android零基础入门第84节:引入Fragment原来是这么回事
查看>>
解析SQL Server之任务调度
查看>>
参考资料地址
查看>>
08.路由规则中定义参数
查看>>
Pandas截取列部分字符,并据此修改另一列的数据
查看>>
java.lang.IllegalArgumentException
查看>>
【Spark】编程实战之模拟SparkRPC原理实现自定义RPC
查看>>
接口实现观察者模式
查看>>
四则运算完结篇
查看>>
Objective-C中的类目,延展,协议
查看>>
Python标准模块--Iterators和Generators
查看>>
Introduction Sockets to Programming in C using TCP/IP
查看>>
PHP 简单实现webSocket
查看>>
zookeeper部署搭建
查看>>
navigationController pop回之前控制器
查看>>
汇编语言实验一
查看>>
Web.config配置文件详解(新手必看)
查看>>
selenide总结
查看>>
selenium--控制浏览器和简单元素操作
查看>>
[笔记] imooc《JavaScript深入浅出》对象与函数
查看>>