Data update
This commit is contained in:
parent
8f05c7136f
commit
0bf4da02c3
82 changed files with 2194 additions and 118 deletions
66
Task/Totient-function/PL-M/totient-function.plm
Normal file
66
Task/Totient-function/PL-M/totient-function.plm
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
100H:
|
||||
BDOS: PROCEDURE (F,A); DECLARE F BYTE, A ADDRESS; GO TO 5; END BDOS;
|
||||
EXIT: PROCEDURE; GO TO 0; END EXIT;
|
||||
PRINT: PROCEDURE (S); DECLARE S ADDRESS; CALL BDOS(9,S); END PRINT;
|
||||
|
||||
PRINT$NUM: PROCEDURE (N);
|
||||
DECLARE (N, P) ADDRESS, CH BASED P BYTE;
|
||||
DECLARE S (6) BYTE INITIAL ('.....$');
|
||||
P = .S(5);
|
||||
DIGIT:
|
||||
P = P-1;
|
||||
CH = '0' + N MOD 10;
|
||||
IF (N := N/10) > 0 THEN GO TO DIGIT;
|
||||
CALL PRINT(P);
|
||||
END PRINT$NUM;
|
||||
|
||||
TOTIENT: PROCEDURE (N) ADDRESS;
|
||||
DECLARE (TOT, N, I) ADDRESS;
|
||||
TOT = N;
|
||||
I = 2;
|
||||
DO WHILE I*I <= N;
|
||||
IF N MOD I = 0 THEN DO;
|
||||
DO WHILE (N := N / I) MOD I = 0; END;
|
||||
TOT = TOT - TOT / I;
|
||||
END;
|
||||
IF I=2 THEN I=1;
|
||||
I = I+2;
|
||||
END;
|
||||
IF N > 1 THEN TOT = TOT - TOT / N;
|
||||
RETURN TOT;
|
||||
END TOTIENT;
|
||||
|
||||
SHOW$PRIME$COUNT: PROCEDURE (N, COUNT);
|
||||
DECLARE (N, COUNT) ADDRESS;
|
||||
CALL PRINT(.'THERE ARE $');
|
||||
CALL PRINT$NUM(COUNT);
|
||||
CALL PRINT(.' PRIMES UP TO $');
|
||||
CALL PRINT$NUM(N);
|
||||
CALL PRINT(.(13,10,'$'));
|
||||
END SHOW$PRIME$COUNT;
|
||||
|
||||
DECLARE (N, TOT) ADDRESS;
|
||||
DECLARE PRIME$COUNT ADDRESS INITIAL (0);
|
||||
|
||||
DO N = 1 TO 25;
|
||||
CALL PRINT(.'PHI($');
|
||||
CALL PRINT$NUM(N);
|
||||
CALL PRINT(.') = $');
|
||||
CALL PRINT$NUM(TOT := TOTIENT(N));
|
||||
IF TOT = N-1 THEN DO;
|
||||
CALL PRINT(.'; PRIME$');
|
||||
PRIME$COUNT = PRIME$COUNT + 1;
|
||||
END;
|
||||
CALL PRINT(.(13,10,'$'));
|
||||
END;
|
||||
|
||||
CALL SHOW$PRIME$COUNT(25, PRIME$COUNT);
|
||||
DO N = 26 TO 10000;
|
||||
IF TOTIENT(N) = N-1 THEN
|
||||
PRIME$COUNT = PRIME$COUNT + 1;
|
||||
IF N=100 OR N=1000 OR N=10000 THEN
|
||||
CALL SHOW$PRIME$COUNT(N, PRIME$COUNT);
|
||||
END;
|
||||
|
||||
CALL EXIT;
|
||||
EOF
|
||||
Loading…
Add table
Add a link
Reference in a new issue