Smallest square that begins with n: Difference between revisions

Add PL/M
(Add COBOL)
(Add PL/M)
Line 1,067:
10: 100 (10^2) 20: 2025 (45^2) 30: 3025 (55^2) 40: 400 (20^2)
</pre>
 
=={{header|PL/M}}==
<lang pli>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 A NUMBER */
PRINT$NUMBER: PROCEDURE (N);
DECLARE S (6) 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;
 
/* DOES A BEGIN WITH B? */
BEGINS$WITH: PROCEDURE (A, B) BYTE;
DECLARE (A, B) ADDRESS;
DO WHILE A > B;
A = A/10;
END;
RETURN A = B;
END BEGINS$WITH;
 
/* FIND SMALLEST SQUARE THAT BEGINS WITH N */
SMALLEST$SQUARE: PROCEDURE (N) ADDRESS;
DECLARE (N, SQN, SQ) ADDRESS;
SQN = 1;
DO WHILE 1;
SQ = SQN * SQN;
IF BEGINS$WITH(SQ, N) THEN
RETURN SQ;
SQN = SQN + 1;
END;
END SMALLEST$SQUARE;
 
DECLARE N ADDRESS;
DO N = 1 TO 49;
CALL PRINT$NUMBER(SMALLEST$SQUARE(N));
CALL PRINT(.(13,10,'$'));
END;
CALL EXIT;
EOF</lang>
{{out}}
<pre style='height:50ex;'>1
25
36
4
529
64
729
81
9
100
1156
121
1369
144
1521
16
1764
1849
196
2025
2116
225
2304
2401
25
2601
2704
289
2916
3025
3136
324
3364
3481
35344
36
3721
3844
3969
400
41209
4225
4356
441
45369
4624
4761
484
49</pre>
 
=={{header|Python}}==
Line 1,153 ⟶ 1,252:
484
49</pre>
 
 
=={{header|Raku}}==
2,114

edits