home *** CD-ROM | disk | FTP | other *** search
- #!/usr/local/bin/clip
- #âIâCâëü[é╠è╓Éö Euler's (totient) function
- #\!- <val>
-
- if @0 < 1
- :warn "èOòöè╓Éö\-é╠ê°Éöé¬0é▄é╜é═òëé╠Ælé╔é╚éΦé▄é╡é╜
- return
- endif
-
- :uint \10
-
- @t = @0
- if @0 % 2 == 0
- @t /= 2
- do; @0 /= 2; until @0 % 2 == 0
- endif
- @d = 3
- while @0 / @d >= @d
- if @0 % @d == 0
- @t = @t / @d * (@d - 1)
- do; @0 /= @d; until @0 % @d == 0
- endif
- @d += 2
- endwhile
- if @0 > 1; @t = @t / @0 * (@0 - 1); endif
- @t
-