Totient function: Difference between revisions

Content added Content deleted
(Add Cowgol)
(Add MAD)
Line 2,975: Line 2,975:
There are 1229 primes below 10000</pre>
There are 1229 primes below 10000</pre>


=={{header|MAD}}==
{{trans|C}}
<syntaxhighlight lang="mad"> NORMAL MODE IS INTEGER
BOOLEAN PRM

INTERNAL FUNCTION(A,B)
ENTRY TO REM.
FUNCTION RETURN A-A/B*B
END OF FUNCTION

INTERNAL FUNCTION(NN)
ENTRY TO TOTENT.
N = NN
TOT = N
THROUGH STEP, FOR I=2, 2, I*I.G.N
WHENEVER REM.(N,I).E.0
THROUGH DIV, FOR N=N, 0, REM.(N,I).NE.0
DIV N = N/I
TOT = TOT-TOT/I
END OF CONDITIONAL
WHENEVER I.E.2, I=1
STEP CONTINUE
WHENEVER N.G.1, TOT = TOT-TOT/N
FUNCTION RETURN TOT
END OF FUNCTION

COUNT = 0
PRINT FORMAT HEADER
THROUGH FRST25, FOR KN=1, 1, KN.G.25
KTOT = TOTENT.(KN)
PRM = KTOT.E.KN-1
WHENEVER PRM, COUNT = COUNT + 1
FRST25 PRINT FORMAT NUMTOT,KN,KTOT,PRM

PRINT FORMAT NUMPRM,25,COUNT

THROUGH CNTPRM, FOR KN=26, 1, KN.G.100000
KTOT = TOTENT.(KN)
WHENEVER KTOT.E.KN-1, COUNT = COUNT+1
WHENEVER KN.E.100 .OR. KN.E.1000 .OR. REM.(KN,10000).E.0,
0 PRINT FORMAT NUMPRM,KN,COUNT
CNTPRM CONTINUE

VECTOR VALUES HEADER = $19H N TOTIENT PRIME*$
VECTOR VALUES NUMTOT = $I2,S2,I7,S2,I5*$
VECTOR VALUES NUMPRM = $22HNUMBER OF PRIMES UP TO,I7,1H:,I6*$
END OF PROGRAM</syntaxhighlight>
{{out}}
<pre> N TOTIENT PRIME
1 1 0
2 1 1
3 2 1
4 2 0
5 4 1
6 2 0
7 6 1
8 4 0
9 6 0
10 4 0
11 10 1
12 4 0
13 12 1
14 6 0
15 8 0
16 8 0
17 16 1
18 6 0
19 18 1
20 8 0
21 12 0
22 10 0
23 22 1
24 8 0
25 20 0
NUMBER OF PRIMES UP TO 25: 9
NUMBER OF PRIMES UP TO 100: 25
NUMBER OF PRIMES UP TO 1000: 168
NUMBER OF PRIMES UP TO 10000: 1229
NUMBER OF PRIMES UP TO 20000: 2262
NUMBER OF PRIMES UP TO 30000: 3245
NUMBER OF PRIMES UP TO 40000: 4203
NUMBER OF PRIMES UP TO 50000: 5133
NUMBER OF PRIMES UP TO 60000: 6057
NUMBER OF PRIMES UP TO 70000: 6935
NUMBER OF PRIMES UP TO 80000: 7837
NUMBER OF PRIMES UP TO 90000: 8713
NUMBER OF PRIMES UP TO 100000: 9592</pre>
=={{header|Mathematica}} / {{header|Wolfram Language}}==
=={{header|Mathematica}} / {{header|Wolfram Language}}==
<syntaxhighlight lang="mathematica">Do[
<syntaxhighlight lang="mathematica">Do[