Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
perl grep函数中的分段错误_Perl - Fatal编程技术网

perl grep函数中的分段错误

perl 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

研究欧拉问题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再次运行它,没有更多的分段错误,但没有输出任何内容。

来自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));'