Chowla numbers: Difference between revisions

→‎{{header|Wren}}: Now uses Wren-math module.
(→‎{{header|Wren}}: Now uses Wren-math module.)
Line 3,966:
 
=={{header|Wren}}==
{{trans|Go}}
{{libheader|Wren-fmt}}
{{libheader|Wren-math}}
<lang ecmascript>import "/fmt" for Fmt
import "/math" for Int, Stat
 
var chowla = Fn.new { |n| (n > 1) ? Stat.sum(Int.properDivisors(n)) - 1 : 0 }
if (n < 1) Fiber.abort("argument must be a positive integer")
var sum = 0
var i = 2
while (i*i <= n) {
if (n%i == 0) {
var j = (n/i).floor
sum = sum + ((i == j) ? i : i + j)
}
i = i + 1
}
return sum
}
 
var sieve = Fn.new { |limit|
// True denotes composite, false denotes prime.
// Only interested in odd numbers >= 3
var c = List.filled(limit, false)
var i = 3
while (i*3 < limit) {
if (!c[i] && chowla.call(i) == 0) {
var j = 3 * i
while (j < limit) {
c[j] = true
j = j + 2*i
}
}
i = i + 2
}
return c
}
 
for (i in 1..37) System.print("chowla(%(Fmt.d(2, i))) = %(chowla.call(i))")
Line 4,006 ⟶ 3,977:
var count = 1
var limit = 1e7
var c = sieveInt.callprimeSieve(limit, false)
var power = 100
var i = 3
9,490

edits