Totient function: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) (Add Cowgol) |
Not a robot (talk | contribs) (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[ |