29 lines
570 B
Plaintext
29 lines
570 B
Plaintext
(gc 32)
|
|
(de gcd (A B)
|
|
(until (=0 B)
|
|
(let M (% A B)
|
|
(setq A B B M) ) )
|
|
(abs A) )
|
|
(de totient (N)
|
|
(let C 0
|
|
(for I N
|
|
(and (=1 (gcd N I)) (inc 'C)) )
|
|
(cons C (= C (dec N))) ) )
|
|
(de p? (N)
|
|
(let C 0
|
|
(for A N
|
|
(and
|
|
(cdr (totient A))
|
|
(inc 'C) ) )
|
|
C ) )
|
|
(let Fmt (3 7 10)
|
|
(tab Fmt "N" "Phi" "Prime?")
|
|
(tab Fmt "-" "---" "------")
|
|
(for N 25
|
|
(tab Fmt
|
|
N
|
|
(car (setq @ (totient N)))
|
|
(cdr @) ) ) )
|
|
(println
|
|
(mapcar p? (25 100 1000 10000 100000)) )
|