Inconsummate numbers in base 10: Difference between revisions
m
→{{header|Wren}}: Changes to preamble and made second version more compact.
(J) |
m (→{{header|Wren}}: Changes to preamble and made second version more compact.) |
||
Line 643:
{{libheader|Wren-fmt}}
It appears to be more than enough to calculate ratios for all numbers up to 999,999 (which only takes about 0.4 seconds on my machine) to be sure of finding the 1,000th inconsummate number.
In fact it still finds the 1,000th number if you limit the search to the first 249,999 (but not 248,999) numbers which may be where the first magic number of '250' comes from in the Pascal/Phix entries.
<syntaxhighlight lang="ecmascript">import "./math" for Int
import "./fmt" for Fmt
Line 675 ⟶ 677:
Alternatively and more generally:
{{trans|Python}}
...though much quicker as I'm using lower figures for the second component of the minDigitSums tuples.
<syntaxhighlight lang="ecmascript">import "./math" for Int, Nums
import "./fmt" for Fmt
var generateInconsummate =
var minDigitSums = (2..14).map { |i| [10.pow(i), ((10.pow(i-2) * 11 - 1) / (9 * i - 17)).floor] }
var limit = Nums.min(minDigitSums.where { |p| p[1] > maxWanted }.map { |p| p[0] })
var arr = List.filled(limit, 0)
arr[0] = 1
var ds = Int.digitSum(dividend)
var quo = (dividend/ds).floor
Line 697:
}
var incons = List.filled(50, 0)
System.print("First 50 inconsummate numbers in base 10:")
for (i in 1..100000) {
var j =
if (i <= 50) {
incons[i-1] = j
if (i == 50) Fmt.tprint("$3d", incons, 10)▼
} else if (i == 1000) {
} else if (i == 10000) {
} else if (i == 100000) {
}
}</syntaxhighlight>
▲Fmt.tprint("$3d", incons, 10)
{{out}}
|