素数,又称质数,在一个大于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. nginx的proxy_set_header

    nginx配置的server段: listen 8888; server_name wyc.com; location /user { proxy_set_header HOST fake.com; ...

  2. Android AIDL实例解析

    AIDL这项技术在我们的开发中一般来说并不是很常用,虽然自己也使用新浪微博的SSO登录,其原理就是使用AIDL,但是自己一直没有动手完整的写过AIDL的例子,所以就有了这篇简单的文章. AIDL(An ...

  3. docer中运行crontab

    1  安装 sudo apt-get install cron 2 启动 start cron 3  列出所有本机启动crontab任务 ls -l /etc/init.d 列出所有自建cron任务 ...

  4. 自助采样法 bootstrap 与 0.632

  5. Linux如何查看当前占用CPU或内存最多的几个进程

    1. ps命令 ps -aux | sort -k4nr | head -N *命令详解: 1. head:-N可以指定显示的行数,默认显示10行. 2. ps:参数a指代all——所有的进程,u指代 ...

  6. python 常用的模块(struct)转

    准确地讲,Python没有专门处理字节的数据类型.但由于str既是字符串,又可以表示字节,所以,字节数组=str.而在C语言中,我们可以很方便地用struct.union来处理字节,以及字节和int, ...

  7. 对tensorflow 中的attention encoder-decoder模型调试分析

    #-*-coding:utf8-*- __author = "buyizhiyou" __date = "2017-11-21" import random, ...

  8. JAX-WS编写webservice

    1.新建一个Java工程 2.创建要发布的类 package com.linjian.webservice; import javax.jws.WebMethod; import javax.jws. ...

  9. NFS网络文件系统的配置

    NFS网络文件系统的配置 NFS网络文件系统 NFS(network file system)网络文件系统.一种使用于分散式文件协定,有SUN公司开发.功能是通过网络让不同的机器.不同的操作系统能够分 ...

  10. bitcoin-qt忘记密码

    客户端有钱包加密功能,输入密码可以增强安全性. 但是,如果你把钱包文件弄丢了,那即使设了密码,币也会丢. 关闭bitcoin-qt,把钱包文件wallet.dat 剪到其他地方(但不要删除),然后重新 ...