Special divisors: Difference between revisions

Add Modula-2
(Add Modula-2)
Line 983:
<pre>{1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 17, 19, 22, 23, 26, 27, 29, 31, 33, 37, 39, 41, 43, 44, 46, 47, 53, 55, 59, 61, 62, 66, 67, 69, 71, 73, 77, 79, 82, 83, 86, 88, 89, 93, 97, 99, 101, 103, 107, 109, 113, 121, 127, 131, 137, 139, 143, 149, 151, 157, 163, 167, 169, 173, 179, 181, 187, 191, 193, 197, 199}
72</pre>
 
=={{header|Modula-2}}==
<lang modula2>MODULE SpecialDivisors;
FROM InOut IMPORT WriteCard, WriteLn;
 
CONST Max = 200;
VAR n, col: CARDINAL;
 
PROCEDURE Reverse(n: CARDINAL): CARDINAL;
VAR result: CARDINAL;
BEGIN
result := 0;
WHILE n > 0 DO
result := result*10 + n MOD 10;
n := n DIV 10;
END;
RETURN result;
END Reverse;
 
PROCEDURE Special(n: CARDINAL): BOOLEAN;
VAR reverse, divisor: CARDINAL;
BEGIN
reverse := Reverse(n);
FOR divisor := 1 TO n DIV 2 DO
IF (n MOD divisor = 0) AND (reverse MOD Reverse(divisor) # 0) THEN
RETURN FALSE;
END;
END;
RETURN TRUE;
END Special;
 
BEGIN
col := 0;
FOR n := 1 TO Max DO
IF Special(n) THEN
WriteCard(n, 4);
col := col + 1;
IF col MOD 10 = 0 THEN
WriteLn();
END;
END;
END;
WriteLn();
END SpecialDivisors.</lang>
{{out}}
<pre> 1 2 3 4 5 6 7 8 9 11
13 17 19 22 23 26 27 29 31 33
37 39 41 43 44 46 47 53 55 59
61 62 66 67 69 71 73 77 79 82
83 86 88 89 93 97 99 101 103 107
109 113 121 127 131 137 139 143 149 151
157 163 167 169 173 179 181 187 191 193
197 199</pre>
 
=={{header|Nim}}==
2,096

edits