gpt4 book ai didi

erlang - Erlang 的欧拉项目 #3

转载 作者:行者123 更新时间:2023-12-02 04:43:34 25 4
gpt4 key购买 nike

我正在尝试在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com