erlang - Erlang 的欧拉项目 #3

标签 erlang prime-factoring

我正在尝试在 Erlang 中编写 Project Euler #3 代码:

The prime factors of 13195 are 5, 7, 13 and 29.
What is the largest prime factor of the number 600851475143 ?

这是我的代码:

-module(problem_3).
-compile(export_all).

start()->
    problem_3(600851475143, 2).

problem_3(Num, F) when Num > 1 ->
    case Num rem F of
    0 ->
        problem_3(Num / F, F);
    1 ->
        problem_3(Num, F + 1)
    end;

problem_3(Num, F) ->
    io:format("result: ~p~n", [F]).

但是这段代码有两个问题:

5> problem_3:start().
** exception error: no case clause matching 2
     in function  problem_3:problem_3/2

6> problem_3:problem_3(10, 2).
** exception error: bad argument in an arithmetic expression
     in function  problem_3:problem_3/2

为什么会出现此错误以及如何修复它?

最佳答案

第一个错误是不言自明的:如果余数大于 1,则没有子句匹配。尝试将第二个子句更改为

_Else ->
         problem_3(Num, F+1)

匹配余数不为零的所有情况。

对于第二个错误,我认为它是由表达式Num/F引起的。这会产生一个 float ,而 problem_3 需要整数参数。尝试一下

problem_3(Num div F, F);

相反。

关于erlang - Erlang 的欧拉项目 #3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6409466/

相关文章:

erlang - Scalaris 与 CouchDB

erlang - 停止 Erlang SSH channel 的问题

c - 在c中找到合数的最大质因数

algorithm - 找到 2 和 5 的因数的最快算法

linux - 如何将 child 添加到 erlang supervisor?

binary - 进程间共享大二进制数据

ssl - 雅司 SSL : Decode Error

java - 使用平方根来帮助确定数字是否为素数

python - 质因数,帮助理解平方根的用途

c++ - math.h pow() 函数无法正常工作?