Numbers in base 10 that are palindromic in bases 2, 4, and 16: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) (Add Python) |
Not a robot (talk | contribs) (Add PL/M) |
||
Line 239: | Line 239: | ||
23 found: 0 1 3 5 15 17 51 85 255 257 273 771 819 1285 1365 3855 4095 4097 4369 12291 13107 20485 21845 |
23 found: 0 1 3 5 15 17 51 85 255 257 273 771 819 1285 1365 3855 4095 4097 4369 12291 13107 20485 21845 |
||
</pre> |
</pre> |
||
=={{header|PL/M}}== |
|||
<lang plm>100H: |
|||
/* CP/M CALLS */ |
|||
BDOS: PROCEDURE (FN, ARG); DECLARE FN BYTE, ARG ADDRESS; GO TO 5; END BDOS; |
|||
EXIT: PROCEDURE; CALL BDOS(0,0); END EXIT; |
|||
PRINT: PROCEDURE (S); DECLARE S ADDRESS; CALL BDOS(9,S); END PRINT; |
|||
DECLARE MAXIMUM LITERALLY '25$000'; |
|||
/* PRINT A NUMBER */ |
|||
PRINT$NUMBER: PROCEDURE (N); |
|||
DECLARE S (7) BYTE INITIAL ('..... $'); |
|||
DECLARE (N, P) ADDRESS, C BASED P BYTE; |
|||
P = .S(5); |
|||
DIGIT: |
|||
P = P - 1; |
|||
C = N MOD 10 + '0'; |
|||
N = N / 10; |
|||
IF N > 0 THEN GO TO DIGIT; |
|||
CALL PRINT(P); |
|||
END PRINT$NUMBER; |
|||
/* REVERSE NUMBER GIVEN BASE */ |
|||
REVERSE: PROCEDURE (N, B) ADDRESS; |
|||
DECLARE (N, R) ADDRESS, B BYTE; |
|||
R = 0; |
|||
DO WHILE N > 0; |
|||
R = R*B + N MOD B; |
|||
N = N/B; |
|||
END; |
|||
RETURN R; |
|||
END REVERSE; |
|||
/* CHECK IF NUMBER IS PALINDROME */ |
|||
PALIN: PROCEDURE (N, B) BYTE; |
|||
DECLARE N ADDRESS, B BYTE; |
|||
RETURN N = REVERSE(N, B); |
|||
END PALIN; |
|||
DECLARE I ADDRESS, C BYTE; |
|||
C = 0; |
|||
DO I = 0 TO MAXIMUM; |
|||
IF PALIN(I,2) AND PALIN(I,4) AND PALIN(I,16) THEN DO; |
|||
CALL PRINT$NUMBER(I); |
|||
C = C + 1; |
|||
IF C = 15 THEN DO; |
|||
CALL PRINT(.(13,10,'$')); |
|||
C = 0; |
|||
END; |
|||
END; |
|||
END; |
|||
CALL EXIT; |
|||
EOF</lang> |
|||
{{out}} |
|||
<pre>0 1 3 5 15 17 51 85 255 257 273 771 819 1285 1365 |
|||
3855 4095 4097 4369 12291 13107 20485 21845</pre> |
|||
=={{header|Python}}== |
=={{header|Python}}== |