```
my @a = <-1 1 2 3 4 5 6 7 8 9>;
#2019-8-9 waylandmy t/a sina.com
#定义多行文本
my str $linesstr = "line1
line2
line3"
#say $linesstr;
say arr2linecount(@a,2);
#一维数组的二维用法
sub arr2getline(@a, int $len, int $lineid){
my $i = ($lineid - 1) * $len + 1;
my @b[$len + 1];
my $j = 1;
#从索引1开始复制
while $i <= ($lineid * $len) {
@b[$j] = @a[$i]; $i += 1; $j += 1;
}
return @b; #b[0] = 未定义
}
sub arr2getv(@a, int $len, int $lineid, int $horid){
#参数说明:数组,第几行,该行的第几个
my int $pi = ($lineid - 1) * $len + $horid;
return @a[$pi];
}
sub arr2linecount(@a, int $len) {
#返回行数
my $pc = (@a.elems -1) / $len;
if ($pc != $pc.Int ) { $pc = $pc.Int + 1;} #取整
return $pc;
}
sub gyue($a, $b) {
#求最大公约数
my int $gy = 1;
my $ai = $a; my $bi = $b;
if ($b > $a) {$ai = $b; $bi = $a;}
while 1 {
while $ai > $bi { $ai -= $bi; }
if ($ai == $bi) { $gy = $bi; last; } else {
($ai, $bi) = ($bi, $bi - $ai);
if ($bi == 1) { $gy = 1; last; }
}
}
return $gy;
}
sub gprimear($n) {
#perl6求质数数组
my int @ar = < -1 2>; #索引从1开始
my int $i = 2; my int $isprime = 1; #-1表示可被整除,1表示不可被整除
my int $ji = 1; my int $ja = 0;
while $i <= $n {
$ji = 1; $isprime = 1; $ja = @ar[$ji];
while $ja < ($i**0.5 + 1) and $ji < @ar.elems { if ($i % $ja == 0) { $isprime = -1; last; } else { $ji += 1; $ja = @ar[$ji]; } }
if ($isprime == 1) { @ar.push: $i; }
$i += 1;
}
#say @ar;
return @ar;
say @ar.elems - 1; #质数个数
}
```
网友评论