29 lines
623 B
Plaintext
29 lines
623 B
Plaintext
totient: function [n][
|
|
tot: new n
|
|
i: 2
|
|
while -> n >= i * i [
|
|
if 0 = n % i [
|
|
while -> 0 = n % i -> n: n / i
|
|
'tot - tot / i
|
|
]
|
|
if 2 = i -> i: 1
|
|
'i + 2
|
|
]
|
|
if n > 1 -> 'tot - tot / n
|
|
return tot
|
|
]
|
|
|
|
primes: 0
|
|
loop 1..100000 'i [
|
|
t: totient i
|
|
prime?: 1 = i - t
|
|
if i < 26 [
|
|
prints ~« Φ(|pad.with:`0` to :string i 2|) = |pad to :string t 2|
|
|
if prime? -> prints ", prime"
|
|
print ""
|
|
]
|
|
if 50 = i -> print ""
|
|
if in? i [100 1000 10000 100000] -> print ~« |primes| primes =< |i|
|
|
if prime? -> 'primes + 1
|
|
]
|