【发布时间】:2014-02-28 12:08:24
【问题描述】:
处理欧拉问题 3
The prime factors of 13195 are 5, 7, 13 and 29.
What is the largest prime factor of the number 600851475143 ?
这是我的 Perl 代码,只是尝试先获取所有因素,但出现分段错误,我的 Perl 年龄只有 2 个月左右,不知道为什么。运行时出现分段错误 11。
#!/usr/bin/perl
use warnings;
use strict;
my $number = 600851475143;
my @factors = grep {$number % $_ == 0} (1..$number);
print @factors;
用 sudo 再次运行,没有分段错误,但没有打印出来。
【问题讨论】:
-
是的,删除了打印代码
-
(1..$number)将生成一个 2T 数组。您使用的是 64 位操作系统吗? -
是的,Mac OS X 10.8.5,perlbrew Perl 5.18.2。也试过 bigint,没有任何区别。
-
我猜还是因为你试图分配太多内存。
-
同意,即使我删除了最后 3 位数字(所以小了 1000 倍)。它打印出“内存不足!”在我的 Linux VM 上,使用了我在 MacBook Pro 上所有剩余的 12G RAM。会尝试别的东西
标签: perl