0

此代码应该从 N 个数字中执行 LCM。

我试图在任何可以打印的地方放置打印件,以查看错误在哪里。我认为是:

if($vec[0] == $vec[$n-1]){
    $resultado = $vec[0];
    last;
}

但我不能让它工作。请你帮助我好吗?

我是 Perl 的新手。希望你能解决这个问题。
我也尝试更改变量,但它不起作用。我是说

$u = 0 , $w = $n-1;

完整代码

4

1 回答 1

-1

要获取 LCM,您可以将任务拆分为多个子例程:

  • is_prime # 如果值为素数,则返回 true
  • root # 返回一个数字的根(构成一个值的所有素数。例如:12 的根是:2、2、3)
  • LCM # 采用值列表。在数字不是素数时提取根。存储在哈希中,每次我们看到根时都会增加

所以我们会有一个像这样的哈希:

%sub_total = (
  VALUE => TIMES_FOUND,
  2 => 2,
  3 => 1,
);

我们有另一个哈希,它是总数。如果 sub_total 散列有一个比总散列更频繁使用的键,我们将它添加到总散列中。

最后,我们遍历总哈希并使用算法找到产品:

for (%total){
   $prod *= $_ ** $total {$_};
}

笔记

我将很快附上我为获取 LCM 而编写的代码。它现在不在我这里。

于 2015-10-04T20:12:34.477 回答