Powerful numbers: Difference between revisions
Content added Content deleted
m (Phix/mpfr) |
(Added Wren) |
||
Line 815: | Line 815: | ||
Number of 9-powerful numbers <= 10^j, for 0 <= j < 19: [1, 1, 1, 2, 6, 11, 16, 24, 38, 59, 94, 145, 217, 317, 453, 644, 919, 1308, 1868] |
Number of 9-powerful numbers <= 10^j, for 0 <= j < 19: [1, 1, 1, 2, 6, 11, 16, 24, 38, 59, 94, 145, 217, 317, 453, 644, 919, 1308, 1868] |
||
Number of 10-powerful numbers <= 10^j, for 0 <= j < 20: [1, 1, 1, 1, 5, 9, 14, 21, 28, 43, 68, 104, 155, 227, 322, 447, 621, 858, 1192, 1651] |
Number of 10-powerful numbers <= 10^j, for 0 <= j < 20: [1, 1, 1, 1, 5, 9, 14, 21, 28, 43, 68, 104, 155, 227, 322, 447, 621, 858, 1192, 1651] |
||
</pre> |
|||
=={{header|Wren}}== |
|||
{{trans|Java}} |
|||
{{libheader|Wren-big}} |
|||
{{libheader|Wren-set}} |
|||
{{libheader|Wren-sort}} |
|||
{{libheader|Wren-fmt}} |
|||
<lang ecmascript>import "/big" for BigInt |
|||
import "/set" for Set |
|||
import "/sort" for Sort |
|||
import "/fmt" for Fmt |
|||
var potentialPowerful = Fn.new { |max, k| |
|||
var indexes = List.filled(k, 1) |
|||
var powerful = Set.new() |
|||
var foundPower = true |
|||
while (foundPower) { |
|||
var genPowerful = false |
|||
for (index in 0...k) { |
|||
var power = BigInt.one |
|||
for (i in 0...k) power = power * BigInt.new(indexes[i]).pow(k+i) |
|||
if (power <= max) { |
|||
powerful.add(power.toString) // can't add BigInts directly as not value type |
|||
indexes[0] = indexes[0] + 1 |
|||
genPowerful = true |
|||
break |
|||
} |
|||
indexes[index] = 1 |
|||
if (index < k - 1) indexes[index+1] = indexes[index+1] + 1 |
|||
} |
|||
if (!genPowerful) foundPower = false |
|||
} |
|||
return powerful.map { |p| BigInt.new(p) }.toList |
|||
} |
|||
var countPowerfulNumbers = Fn.new{ |max, k| potentialPowerful.call(max, k).count } |
|||
var getPowerfulNumbers = Fn.new { |max, k| |
|||
var powerfulNumbers = potentialPowerful.call(max, k) |
|||
Sort.quick(powerfulNumbers) |
|||
return powerfulNumbers |
|||
} |
|||
for (k in 2..10) { |
|||
var max = BigInt.ten.pow(k) |
|||
var powerfulNumbers = getPowerfulNumbers.call(max, k) |
|||
var count = powerfulNumbers.count |
|||
Fmt.print("There are $d $d-powerful numbers between 1 and $i", count, k, max) |
|||
Fmt.print("List: [$i ... $i]", powerfulNumbers[0..4], powerfulNumbers[-5..-1]) |
|||
} |
|||
System.print() |
|||
for (k in 2..10) { |
|||
var powCount = [] |
|||
for (j in 0...k+10) { |
|||
var max = BigInt.ten.pow(j) |
|||
powCount.add(countPowerfulNumbers.call(max, k)) |
|||
} |
|||
Fmt.print("Count of $2d-powerful numbers <= 10^j, j in [0, $d]: $n", k, k + 9, powCount) |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
There are 14 2-powerful numbers between 1 and 100 |
|||
List: [1 4 8 9 16 ... 49 64 72 81 100] |
|||
There are 20 3-powerful numbers between 1 and 1000 |
|||
List: [1 8 16 27 32 ... 625 648 729 864 1000] |
|||
There are 25 4-powerful numbers between 1 and 10000 |
|||
List: [1 16 32 64 81 ... 5184 6561 7776 8192 10000] |
|||
There are 32 5-powerful numbers between 1 and 100000 |
|||
List: [1 32 64 128 243 ... 65536 69984 78125 93312 100000] |
|||
There are 38 6-powerful numbers between 1 and 1000000 |
|||
List: [1 64 128 256 512 ... 559872 746496 823543 839808 1000000] |
|||
There are 46 7-powerful numbers between 1 and 10000000 |
|||
List: [1 128 256 512 1024 ... 7558272 8388608 8957952 9765625 10000000] |
|||
There are 52 8-powerful numbers between 1 and 100000000 |
|||
List: [1 256 512 1024 2048 ... 60466176 67108864 80621568 90699264 100000000] |
|||
There are 59 9-powerful numbers between 1 and 1000000000 |
|||
List: [1 512 1024 2048 4096 ... 644972544 725594112 816293376 967458816 1000000000] |
|||
There are 68 10-powerful numbers between 1 and 10000000000 |
|||
List: [1 1024 2048 4096 8192 ... 7739670528 8589934592 8707129344 9795520512 10000000000] |
|||
Count of 2-powerful numbers <= 10^j, j in [0, 11]: [1, 4, 14, 54, 185, 619, 2027, 6553, 21044, 67231, 214122, 680330] |
|||
Count of 3-powerful numbers <= 10^j, j in [0, 12]: [1, 2, 7, 20, 51, 129, 307, 713, 1645, 3721, 8348, 18589, 41136] |
|||
Count of 4-powerful numbers <= 10^j, j in [0, 13]: [1, 1, 5, 11, 25, 57, 117, 235, 464, 906, 1741, 3312, 6236, 11654] |
|||
Count of 5-powerful numbers <= 10^j, j in [0, 14]: [1, 1, 3, 8, 16, 32, 63, 117, 211, 375, 659, 1153, 2000, 3402, 5770] |
|||
Count of 6-powerful numbers <= 10^j, j in [0, 15]: [1, 1, 2, 6, 12, 21, 38, 70, 121, 206, 335, 551, 900, 1451, 2326, 3706] |
|||
Count of 7-powerful numbers <= 10^j, j in [0, 16]: [1, 1, 1, 4, 10, 16, 26, 46, 77, 129, 204, 318, 495, 761, 1172, 1799, 2740] |
|||
Count of 8-powerful numbers <= 10^j, j in [0, 17]: [1, 1, 1, 3, 8, 13, 19, 32, 52, 85, 135, 211, 315, 467, 689, 1016, 1496, 2191] |
|||
Count of 9-powerful numbers <= 10^j, j in [0, 18]: [1, 1, 1, 2, 6, 11, 16, 24, 38, 59, 94, 145, 217, 317, 453, 644, 919, 1308, 1868] |
|||
Count of 10-powerful numbers <= 10^j, j in [0, 19]: [1, 1, 1, 1, 5, 9, 14, 21, 28, 43, 68, 104, 155, 227, 322, 447, 621, 858, 1192, 1651] |
|||
</pre> |
</pre> |
||