【发布时间】:2015-12-13 19:31:54
【问题描述】:
我是 Erlang 的新手,只是有一个问题。 我已经在 StackOverflow 上查看过这里并进行了很多谷歌搜索。
我正在尝试编写一个函数,它接受两个参数并返回它们之间的质数。我最大的问题是素数测试(检查一个数字是否是素数)。其余的东西我稍后再修。
这是我目前的代码:
-module(ListPrime).
-export([primeList/2]).
primeList(0, 0)->
io:format("No prime numbers here ~s~n", [0]);
`
primeList(Start, Finish)->
CheckPrime = Finish rem Start,
if
Start =< Finish, CheckPrime == 1 -> primeList(Start, Finish-1)
end.
基本上我想做的是:
检查 Finish 是否为质数。
如果没有,请转到下一个数字 (Finish-1)。
继续直到达到基本情况。
它可以编译,但它显然没有做我想要它做的事情,因为 我不知道如何检查一个数字是否是素数。
我知道质数的定义是什么(一个只能被自身和 1 整除的数),但是当我想到这个定义时,我想到的唯一要写的是:
Finish rem Finish
并且代码行适用于任何使用的数字。如何在 Erlang 中检查一个数字是否为素数?非常感谢。
【问题讨论】:
-
在 SICP 中有一个关于这个的讨论,很容易翻译成 Erlang。 mitpress.mit.edu/sicp/full-text/book/… 素性测试是一个活跃的研究领域。
-
看here。