Perfect totient numbers: Difference between revisions

Added Wren
(Added Wren)
Line 1,376:
<pre>The first 20 perfect totient numbers are:
[3, 9, 15, 27, 39, 81, 111, 183, 243, 255, 327, 363, 471, 729, 2187, 2199, 3063, 4359, 4375, 5571]</pre>
 
=={{header|Wren}}==
{{trans|Go}}
The version using Euler's product formula.
<lang ecmascript>var totient = Fn.new { |n|
var tot = n
var i = 2
while (i*i <= n) {
if (n%i == 0) {
while(n%i == 0) n = (n/i).floor
tot = tot - (tot/i).floor
}
if (i == 2) i = 1
i = i + 2
}
if (n > 1) tot = tot - (tot/n).floor
return tot
}
 
var perfect = []
var n = 1
while (perfect.count < 20) {
var tot = n
var sum = 0
while (tot != 1) {
tot = totient.call(tot)
sum = sum + tot
}
if (sum == n) perfect.add(n)
n = n + 2
}
System.print("The first 20 perfect totient numbers are:")
System.print(perfect)</lang>
 
{{out}}
<pre>
The first 20 perfect totient numbers are:
[3, 9, 15, 27, 39, 81, 111, 183, 243, 255, 327, 363, 471, 729, 2187, 2199, 3063, 4359, 4375, 5571]
</pre>
 
=={{header|zkl}}==
9,476

edits