Powerful numbers: Difference between revisions

→‎{{header|Perl 6}}: Various style and efficiency twiddles
m (→‎{{header|Julia}}: missing $)
(→‎{{header|Perl 6}}: Various style and efficiency twiddles)
Line 350:
Perl 6 has no handy pre-made nth integer root routine so has the same problem as Go with needing a slight "fudge factor" in the nth root calculation.
 
<lang perl6>sub super ($e\x) { $ex.trans([<0123456789>.comb] => [<⁰¹²³⁴⁵⁶⁷⁸⁹>.comb]) }
 
sub is-square-free (Int $\n) {
constant @p = ^100 .map: { next unless .is-prime; .² };
for @p -> \p { return False if $n %% $_ for @p; }
True
}
 
sub powerfuls ($\n, $\k, \enumerate = False) {
my $fudge-factor = .0001;
 
sub powerfuls ($n, $k) {
my @powerful;
p(1, 2*$k - 1);
sub p ($\m, $\r) {
@powerful.push($m), return if $r < $k; {
for 1 .. (($n /enumerate $?? @powerful.push(m) **!! (@powerful[m - 1/$r) + $fudge?? (m -factor 1).floorchars ->!! $v {0]++);
if $r > $k {return
}
next unless is-square-free($v);
for 1 .. ((n / m) ** (1/r) next+ unless.001).Int $m gcd-> $\v == 1;{
if r > k {
next unless is-square-free($v);
next unless m gcd v == 1;
}
p($m * $v ** $r, $r - 1)
}
}
Line 378 ⟶ 379:
put "Count and first and last five enumerated n-powerful numbers in 10ⁿ:";
for 2..10 -> \k {
my @powerful = sort powerfuls(10**k, k, True);
printf "%2d %2s-powerful numbers <= 10%-2s: %s ... %s\n", +@powerful, k, super(k),
@powerful.head(5).join(", "), @powerful.tail(5).join(", ");
Line 384 ⟶ 385:
 
put "\nCounts in each order of magnitude:";
my $top = 109;
for 2..10 -> \k {
myprintf @powerfuls"%2s-powerful numbers <= powerfuls(10**10ⁿ ($topwhere +0 k<= -n <= 1%d): ", k), $top+k;
quietly say join ', ', [\+] powerfuls(10**($top + k), k);
printf "%2s-powerful numbers <= 10ⁿ (where n == 0 through %d): ", k, $top+k-1;
say join ", ", (0 ..^ ($top+k)).hyper(:2batch).map: -> \j { +@powerfuls.race.grep: * <= 10**j }
}</lang>
{{out}}
Line 403:
 
Counts in each order of magnitude:
2-powerful numbers <= 10ⁿ (where n0 =<= 0n through<= 11): 1, 4, 14, 54, 185, 619, 2027, 6553, 21044, 67231, 214122, 680330
3-powerful numbers <= 10ⁿ (where n0 =<= 0n through<= 12): 1, 2, 7, 20, 51, 129, 307, 713, 1645, 3721, 8348, 18589, 41136
4-powerful numbers <= 10ⁿ (where n0 =<= 0n through<= 13): 1, 1, 5, 11, 25, 57, 117, 235, 464, 906, 1741, 3312, 6236, 11654, 11655
5-powerful numbers <= 10ⁿ (where n0 =<= 0n through<= 14): 1, 1, 3, 8, 16, 32, 63, 117, 211, 375, 659, 1153, 2000, 3402, 5770, 5772
6-powerful numbers <= 10ⁿ (where n0 =<= 0n through<= 15): 1, 1, 2, 6, 12, 21, 38, 70, 121, 206, 335, 551, 900, 1451, 2326, 3706, 3707
7-powerful numbers <= 10ⁿ (where n0 =<= 0n through<= 16): 1, 1, 1, 4, 10, 16, 26, 46, 77, 129, 204, 318, 495, 761, 1172, 1799, 2740
8-powerful numbers <= 10ⁿ (where n0 =<= 0n through<= 17): 1, 1, 1, 3, 8, 13, 19, 32, 52, 85, 135, 211, 315, 467, 689, 1016, 1496, 2191
9-powerful numbers <= 10ⁿ (where n0 =<= 0n through<= 18): 1, 1, 1, 2, 6, 11, 16, 24, 38, 59, 94, 145, 217, 317, 453, 644, 919, 1308, 1868
10-powerful numbers <= 10ⁿ (where n0 =<= 0n through<= 19): 1, 1, 1, 1, 5, 9, 14, 21, 28, 43, 68, 104, 155, 227, 322, 447, 621, 858, 1192, 1651</pre>
 
=={{header|Phix}}==
10,327

edits