Numbers whose binary and ternary digit sums are prime: Difference between revisions

Add PL/M
(Add Cowgol)
(Add PL/M)
Line 552:
157 162 167 171 173 179 181 185 191 193
199</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;
 
/* PRINT NUMBER */
PRINT$NUMBER: PROCEDURE (N);
DECLARE S (8) BYTE INITIAL ('.....',13,10,'$');
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;
 
/* SIMPLE PRIMALITY TEST */
PRIME: PROCEDURE (N) BYTE;
DECLARE (N, I) BYTE;
IF N < 2 THEN RETURN 0;
DO I=2 TO N-1;
IF N MOD I = 0 THEN RETURN 0;
END;
RETURN 1;
END PRIME;
 
/* SUM OF DIGITS */
DIGIT$SUM: PROCEDURE (N, BASE) BYTE;
DECLARE (N, BASE, SUM) BYTE;
SUM = 0;
DO WHILE N > 0;
SUM = SUM + N MOD BASE;
N = N / BASE;
END;
RETURN SUM;
END DIGIT$SUM;
 
/* TEST NUMBERS 0 .. 199 */
DECLARE I BYTE;
DO I=0 TO 199;
IF PRIME(DIGIT$SUM(I,2)) AND PRIME(DIGIT$SUM(I,3)) THEN
CALL PRINT$NUMBER(I);
END;
 
CALL EXIT;
EOF</lang>
{{out}}
<pre style='height:50ex;'>5
6
7
10
11
12
13
17
18
19
21
25
28
31
33
35
36
37
41
47
49
55
59
61
65
67
69
73
79
82
84
87
91
93
97
103
107
109
115
117
121
127
129
131
133
137
143
145
151
155
157
162
167
171
173
179
181
185
191
193
199</pre>
 
=={{header|Phix}}==
2,115

edits