問題描述
abundant 數(shù)是其所有因子的和大于該數(shù)智蝠,而deficient數(shù)是其因子的和小于該數(shù)杈湾。
例如, 考慮數(shù)字 21毛秘。它的因子是 1, 3, 7 和 21, 這些因子的和是32。 因?yàn)?32 小于 2 x 21, 所以 21 是 deficient叫挟。它的差額是 2 x 21 - 32 = 10限煞。
12 是第一個(gè) abundant 數(shù)。它的因子是 1, 2, 3, 4, 6 和 12, 并且它們的和是 28署驻。 因?yàn)?28 大于 2 x 12, 所以 12 是 abundant旺上。它們的差額是 28 - 2 x 12 = 4。
輸入描述
你會給定一個(gè)整數(shù), 每行一個(gè)窃这。例如:
18
21
9
輸出描述
你的程序應(yīng)該打印信息, 如果數(shù)字是 deficient, abundant(和它的abundance), 或者都不。例如:
18 abundant by 3
21 deficient
9 ~~neither~~ deficient
輸入挑戰(zhàn)
111
112
220
69
134
85
挑戰(zhàn)輸出:
111 ~~neither~~ deficient
112 abundant by 24
220 abundant by 64
69 deficient
134 deficient
85 deficient
for lines() -> $n {
my $sum = (1..$n/2).grep($n %% *).sum;
say "$n " ~ ($sum > $n ?? "abundant by {$sum - $n}" !!
$sum < $n ?? "deficient" !! "neither");
}
或者
for lines() -> $n {
given (1..$n/2).grep($n %% *).sum {
when * > $n { say "$n abundant by {$_ - $n}" }
when * < $n { say "$n deficient" }
default { say "$n neither" }
}
}