大虾帮忙看看这段代码,不知道问题在哪儿

大虾帮忙看看这段代码,不知道问题在哪儿

#!C:\Perl\bin\perl

$count=0;
$maxv=20;
$value=1;

while ($count < $maxv) {
        $value++;
        $composite=0;
                OUTER: for ($i=2;$i < $value; $i++) {
                        for ($j=$i;$j<$value ;$j++) {
                                if ($i*$j==$value) {
                                        $composite=1;
                                        last OUTER;
                                }
                        }
}
while (!$composite) {
        $count++;
        print "$value is a prime!\n";
}
}




上边这段代码是一本书里的,用于查找20个质数,但是不知道问题在哪儿,执行时好像$value不会增值,输出一直是‘2 is a prime!'的无穷循环,我看不出来问题在哪儿,求助大虾,多谢啦
while (!$composite) {
        $count++;
        print "$value is a prime!\n";
}

为何用while ?
1.my
2.OUTER标签块的循环一次都没跑;while循环是穷循环。
多谢楼上几位,我是新手,一直没看出问题,那儿确实不该用while的,造成死循环,和和,多谢啦
这么复杂?

[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl
use strict;
use warnings;
my $upperlimit = 20 || shift;
foreach (2..$upperlimit){
        my $candidate = $_;
        foreach(2..$candidate){
                print "\t$candidate is a prime!\n" if $candidate == $_ ;
                last if $candidate % $_ == 0;
        }
}



QUOTE:
<lig@other-server:~/script_test>$ ./prime.pl
        2 is a prime!
        3 is a prime!
        5 is a prime!
        7 is a prime!
        11 is a prime!
        13 is a prime!
        17 is a prime!
        19 is a prime!