Untouchable numbers: Difference between revisions
Content added Content deleted
m (→{{header|Go}}: Minor change.) |
(→{{header|Wren}}: Sieve now uses less memory and primes are generated in advance. Timing still about 66 seconds.) |
||
Line 530: | Line 530: | ||
var sieve = Fn.new { |n| |
var sieve = Fn.new { |n| |
||
n = n + 1 |
n = n + 1 |
||
var s = List.filled(n |
var s = List.filled(n+1, false) |
||
for (i in 0..n) { |
for (i in 0..n) { |
||
var sum = Nums.sum(Int.properDivisors(i)) |
var sum = Nums.sum(Int.properDivisors(i)) |
||
s[sum] = true |
if (sum <= n) s[sum] = true |
||
} |
} |
||
return s |
return s |
||
Line 539: | Line 539: | ||
var limit = 1e5 |
var limit = 1e5 |
||
var c = Int.primeSieve(limit, false) |
|||
var s = sieve.call(14 * limit) |
var s = sieve.call(14 * limit) |
||
var untouchable = [2, 5] |
var untouchable = [2, 5] |
||
var n = 6 |
var n = 6 |
||
while (n <= limit) { |
while (n <= limit) { |
||
if (!s[n] && |
if (!s[n] && c[n-1] && c[n-3]) untouchable.add(n) |
||
n = n + 2 |
n = n + 2 |
||
} |
} |