素数,又称质数,在一个大于1的自然数中,除了1和此整数自身之外,不能被其他自然数整除的数。
比1大但不是素数的数称为合数。
1和0既不是素数,也不是合数。
算术基本定理证明每个大于1的正整数都可以写成素数的乘积,并且这种乘积的形式是唯一的。
 -module(get_prime).

 -compile(export_all).

 test_cost_time(N) ->
% N为传入具体的数量,这里使用erlang自带的timer:tc测试所消耗时间
timer:tc(?MODULE,get_prime,[N]). get_prime(N) ->
length(get_prime(2, N, [])). get_prime(Seq, Seq, List) ->
List; get_prime(Seq, N, List) ->
Rec = for_prime(Seq),
if
Rec =:= null ->
get_prime(Seq + 1, N, List);
true ->
get_prime(Seq + 1, N, [Rec | List])
end. %判断某一个具体的数是否为质数
for_prime(Seq) ->
SqrtValue = trunc(math:sqrt(Seq)),
for_prime(Seq, lists:seq(2, SqrtValue), 1). for_prime(_Seq, [], 0) ->
null; for_prime(Seq, [], _) ->
Seq; for_prime(_Seq, _, 0) ->
null; for_prime(Seq, [Num | List], _) ->
for_prime(Seq, List, Seq rem Num).

结果如下:


前一个为消耗的微秒数,后一个为N以内总共有多少个质数. 
在erlang中,随着数字的扩大,其消耗的时间也是急剧增加的,暴露了erlang计算能力较差的缺点。
说明,erlang不适合做计算密集型的场景,而其特点还是在IO密集型的场景(如网关等)。

erlang 求N以内的质数的更多相关文章

  1. 求1000以内的质数c语言

    之前在做求1000以内的质数的时候,我们一般能想到的就是从3~(根号)no,逐一和no除,如果存在某个i使得  i|no成立的话,说明no不是质数(“i|no”是i整除除no的意思): 在<明解 ...

  2. 求n以内的质数(质数的定义:在大于1的自然数中,除了1和它本身意外,无法被其他自然数整除的数)

    思路: 1.(质数筛选定理)n不能够被不大于根号n的任何质数整除,则n是一个质数2.除了2的偶数都不是质数代码如下: /** * 求n内的质数 * @param int $n * @return ar ...

  3. 编程&blog处女篇-用C#求100以内的质数

    using System;namespace Loops{ class Program { static void Main(string[] args) { /*局部变量定义*/ int i, j; ...

  4. Java实现 基础算法 求100以内的质数

    public class 求质数 { public static void main(String[] args) { for (int i = 2; i < 100; i++) { int t ...

  5. 数论-求n以内的质数

    一.埃拉托斯特尼筛法 名字很高大上,然而并没有什么卵用…… 思路: 在把<=√n的质数所有的<=n的倍数剔除,剩下的就都是质数了,很容易理解…… 复杂度O(nloglogn) #inclu ...

  6. 求n以内的质数的数量

  7. python-找出100以内的质数

    质数:就是只能被1和本身整除的数,1除外,如2,3,5,7,11,13等等 ##求一百以内的质数(1和本身除尽的数)if __name__ == '__main__': list=[] flag=Fa ...

  8. while做法1.兔子生兔子 2.求100以内质数的和3.洗发水15元 牙膏5元 香皂2元 150元的算法

    1.兔子生兔子 2.求100以内质数的和 3.150块钱花完问题

  9. while:1.兔子生兔子问题 2.打印菱形 3.求100以内质数的和4.洗发水15元一瓶,牙膏5元一支,香皂2元一块,150元刚好花完

    1.兔子生兔子问题: 2.打印菱形 3.求100以内质数的和 4.洗发水15元一瓶,牙膏5元一支,香皂2元一块,150元刚好花完有多少种情况?

随机推荐

  1. List集合-保存和输出宠物信息

    package collection; /** * 宠物类 * @author * */ public class Pet { private String name; private String ...

  2. java File和Byte[]数组 相互转换

    public class Test { public static void main(String[] args){ String filePath = "E:\\softoon\\wor ...

  3. Android SDK 目录说明

    Android SDK目录说明: AVD Manager.exe:虚拟机管理工具 SDK Manager.exe:sdk管理工具 tools目录:包括测试.调试.第三方工具.模拟器.数据管理工具等. ...

  4. adb devices 找不到设备怎么办 --- 2

    问题现象:在电脑上安装好手机驱动后,手机进入设置---->应用程序---->开发----->勾选USB调试后连接电脑,,在CMD命令中输入adb devices发现没有设备. 解决方 ...

  5. 微软官方的精简版Windows 7——Windows Thin PC

    Windows Thin PC是微软的Window 7的精简版本,它的一个非常明显的特点是系统资源占用小.如下是官方的系统配置需求: CPU:    主频1 GHz 内存:    1GB(实际占用约5 ...

  6. tiny4412 串口驱动分析六 --- TTY驱动架构

    转载: http://www.linuxidc.com/Linux/2013-11/92639.htm 参考: http://blog.csdn.net/lamdoc/article/details/ ...

  7. Android应用程序窗体设计框架介绍

    在Android系统中,一个Activity相应一个应用程序窗体.不论什么一个Activity的启动都是由AMS服务和应用程序进程相互配合来完毕的.AMS服务统一调度系统中全部进程的Activity启 ...

  8. cocos2d-x ios游戏开发初认识(六) 渲染的优化

    做程序开发肯定要考虑到内存的优化,毕竟iphone本身的内存就不是非常大.这一节主要说这个cocos2d开发对内存的优化,详细表如今,既能够对同样的精灵(图片)仅仅渲染一次,也能够对不能的精灵仅仅渲染 ...

  9. 倍福TwinCAT(贝福Beckhoff)基础教程 松下伺服驱动器报错 21.0怎么办

    编码器通讯断线异常保护,一般就是通讯线松动或者受干扰(最难以排查的情况是,我接了六套驱动器和伺服,比如J0的线是随便做的,其他五套都是西门子的合格网线,我运行程序的时候,J0如果单关节运动没任何问题, ...

  10. ReadWriteLock 读写锁(读书笔记)

     读写分离锁可以有效的帮助减少锁的竞争,提升系统的效率, 读-读不互斥 读读之间不阻塞 读-写互斥 读阻塞写,写也会阻塞读 写-写互斥 写写阻塞 在系统中,读操作次数远远大于写操作,则读写锁就可以发挥 ...