perl grep函数中的分段错误
研究欧拉问题3perl grep函数中的分段错误,perl,Perl,研究欧拉问题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
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再次运行它,没有更多的分段错误,但没有输出任何内容。来自google“”的代码并翻译python代码
use strict;
use warnings;
sub largest_prime_factor {
my $n = shift;
my $largest_factor = 1;
# remove any factors of 2 first
while ($n % 2 == 0) {
$largest_factor = 2;
$n /= 2;
}
# now look at odd factors
my $p = 3;
while ($n != 1) {
while ($n % $p == 0) {
$largest_factor = $p;
$n /= $p;
}
$p += 2
}
return $largest_factor
}
print largest_prime_factor(600851475143);
1;
__END__
或依赖良好的ole cpan:
use Math::Prime::Util qw(factor);
use List::Util qw(max);
use strict;
use warnings;
print max factor(600851475143);
谷歌搜索“”并翻译python代码的代码
use strict;
use warnings;
sub largest_prime_factor {
my $n = shift;
my $largest_factor = 1;
# remove any factors of 2 first
while ($n % 2 == 0) {
$largest_factor = 2;
$n /= 2;
}
# now look at odd factors
my $p = 3;
while ($n != 1) {
while ($n % $p == 0) {
$largest_factor = $p;
$n /= $p;
}
$p += 2
}
return $largest_factor
}
print largest_prime_factor(600851475143);
1;
__END__
或依赖良好的ole cpan:
use Math::Prime::Util qw(factor);
use List::Util qw(max);
use strict;
use warnings;
print max factor(600851475143);
谷歌搜索“”并翻译python代码的代码
use strict;
use warnings;
sub largest_prime_factor {
my $n = shift;
my $largest_factor = 1;
# remove any factors of 2 first
while ($n % 2 == 0) {
$largest_factor = 2;
$n /= 2;
}
# now look at odd factors
my $p = 3;
while ($n != 1) {
while ($n % $p == 0) {
$largest_factor = $p;
$n /= $p;
}
$p += 2
}
return $largest_factor
}
print largest_prime_factor(600851475143);
1;
__END__
或依赖良好的ole cpan:
use Math::Prime::Util qw(factor);
use List::Util qw(max);
use strict;
use warnings;
print max factor(600851475143);
谷歌搜索“”并翻译python代码的代码
use strict;
use warnings;
sub largest_prime_factor {
my $n = shift;
my $largest_factor = 1;
# remove any factors of 2 first
while ($n % 2 == 0) {
$largest_factor = 2;
$n /= 2;
}
# now look at odd factors
my $p = 3;
while ($n != 1) {
while ($n % $p == 0) {
$largest_factor = $p;
$n /= $p;
}
$p += 2
}
return $largest_factor
}
print largest_prime_factor(600851475143);
1;
__END__
或依赖良好的ole cpan:
use Math::Prime::Util qw(factor);
use List::Util qw(max);
use strict;
use warnings;
print max factor(600851475143);
是的,删除的打印代码
(1..$number)
将生成一个2T数组。您使用的是64位操作系统吗?是的,Mac OS X 10.8.5,perlbrew Perl 5.18.2。我也尝试过bigint,但没有任何区别。我想这仍然是因为您试图分配太多的内存。同意,即使在我删除了最后3个数字(所以小了1000倍)之后。它在我的Linux虚拟机上打印出“内存不足”,在MacBook Pro上使用了我剩余的所有12G内存。将尝试elseYea,删除打印代码(1..$number)
将生成2T数组。您使用的是64位操作系统吗?是的,Mac OS X 10.8.5,perlbrew Perl 5.18.2。我也尝试过bigint,但没有任何区别。我想这仍然是因为您试图分配太多的内存。同意,即使在我删除了最后3个数字(所以小了1000倍)之后。它在我的Linux虚拟机上打印出“内存不足”,在MacBook Pro上使用了我剩余的所有12G内存。将尝试elseYea,删除打印代码(1..$number)
将生成2T数组。您使用的是64位操作系统吗?是的,Mac OS X 10.8.5,perlbrew Perl 5.18.2。我也尝试过bigint,但没有任何区别。我想这仍然是因为您试图分配太多的内存。同意,即使在我删除了最后3个数字(所以小了1000倍)之后。它在我的Linux虚拟机上打印出“内存不足”,在MacBook Pro上使用了我剩余的所有12G内存。将尝试elseYea,删除打印代码(1..$number)
将生成2T数组。您使用的是64位操作系统吗?是的,Mac OS X 10.8.5,perlbrew Perl 5.18.2。我也尝试过bigint,但没有任何区别。我想这仍然是因为您试图分配太多的内存。同意,即使在我删除了最后3个数字(所以小了1000倍)之后。它在我的Linux虚拟机上打印出“内存不足”,在MacBook Pro上使用了我剩余的所有12G内存。现在将尝试一些更简单的解决方案:perl-E'use ntheory:all;说vecmax(系数(600851475143));'CPAN解决方案现在稍微容易一些:perl-E'use-ntheory:all”;说vecmax(系数(600851475143));'CPAN解决方案现在稍微容易一些:perl-E'use-ntheory:all”;说vecmax(系数(600851475143));'CPAN解决方案现在稍微容易一些:perl-E'use-ntheory:all”;说vecmax(系数(600851475143));'