Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
41
Task/Untouchable-numbers/Wren/untouchable-numbers-1.wren
Normal file
41
Task/Untouchable-numbers/Wren/untouchable-numbers-1.wren
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
import "/math" for Int, Nums
|
||||
import "/seq" for Lst
|
||||
import "/fmt" for Fmt
|
||||
|
||||
var sieve = Fn.new { |n|
|
||||
n = n + 1
|
||||
var s = List.filled(n+1, false)
|
||||
for (i in 0..n) {
|
||||
var sum = Nums.sum(Int.properDivisors(i))
|
||||
if (sum <= n) s[sum] = true
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
var limit = 1e5
|
||||
var c = Int.primeSieve(limit, false)
|
||||
var s = sieve.call(14 * limit)
|
||||
var untouchable = [2, 5]
|
||||
var n = 6
|
||||
while (n <= limit) {
|
||||
if (!s[n] && c[n-1] && c[n-3]) untouchable.add(n)
|
||||
n = n + 2
|
||||
}
|
||||
|
||||
System.print("List of untouchable numbers <= 2,000:")
|
||||
for (chunk in Lst.chunks(untouchable.where { |n| n <= 2000 }.toList, 10)) {
|
||||
Fmt.print("$,6d", chunk)
|
||||
}
|
||||
System.print()
|
||||
Fmt.print("$,6d untouchable numbers were found <= 2,000", untouchable.count { |n| n <= 2000 })
|
||||
var p = 10
|
||||
var count = 0
|
||||
for (n in untouchable) {
|
||||
count = count + 1
|
||||
if (n > p) {
|
||||
Fmt.print("$,6d untouchable numbers were found <= $,7d", count-1, p)
|
||||
p = p * 10
|
||||
if (p == limit) break
|
||||
}
|
||||
}
|
||||
Fmt.print("$,6d untouchable numbers were found <= $,d", untouchable.count, limit)
|
||||
44
Task/Untouchable-numbers/Wren/untouchable-numbers-2.wren
Normal file
44
Task/Untouchable-numbers/Wren/untouchable-numbers-2.wren
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
import "/math" for Int, Nums
|
||||
import "/seq" for Lst
|
||||
import "/fmt" for Fmt
|
||||
|
||||
var limit = 1e6
|
||||
var m = 63
|
||||
var c = Int.primeSieve(limit, false)
|
||||
var n = m * limit + 1
|
||||
var sumDivs = List.filled(n, 0)
|
||||
for (i in 1...n) {
|
||||
var j = i
|
||||
while (j < n) {
|
||||
sumDivs[j] = sumDivs[j] + i
|
||||
j = j + i
|
||||
}
|
||||
}
|
||||
var s = List.filled(n, false)
|
||||
for (i in 1...n) {
|
||||
var sum = sumDivs[i] - i // proper divs sum
|
||||
if (sum <= n) s[sum] = true
|
||||
}
|
||||
var untouchable = [2, 5]
|
||||
n = 6
|
||||
while (n <= limit) {
|
||||
if (!s[n] && c[n-1] && c[n-3]) untouchable.add(n)
|
||||
n = n + 2
|
||||
}
|
||||
System.print("List of untouchable numbers <= 2,000:")
|
||||
for (chunk in Lst.chunks(untouchable.where { |n| n <= 2000 }.toList, 10)) {
|
||||
Fmt.print("$,6d", chunk)
|
||||
}
|
||||
System.print()
|
||||
Fmt.print("$,7d untouchable numbers were found <= 2,000", untouchable.count { |n| n <= 2000 })
|
||||
var p = 10
|
||||
var count = 0
|
||||
for (n in untouchable) {
|
||||
count = count + 1
|
||||
if (n > p) {
|
||||
Fmt.print("$,7d untouchable numbers were found <= $,9d", count-1, p)
|
||||
p = p * 10
|
||||
if (p == limit) break
|
||||
}
|
||||
}
|
||||
Fmt.print("$,7d untouchable numbers were found <= $,d", untouchable.count, limit)
|
||||
Loading…
Add table
Add a link
Reference in a new issue