Proper divisors: Difference between revisions

m (→‎version 2: changed wording in the REXX section header.)
Line 2,165:
{{out}}
<pre>{15120, 79}</pre>
 
=={{header|Modula-2}}==
<lang modula2>MODULE ProperDivisors;
FROM FormatString IMPORT FormatString;
FROM Terminal IMPORT WriteString,WriteLn,ReadChar;
 
PROCEDURE WriteInt(n : INTEGER);
VAR buf : ARRAY[0..15] OF CHAR;
BEGIN
FormatString("%i", buf, n);
WriteString(buf)
END WriteInt;
 
PROCEDURE proper_divisors(n : INTEGER; print_flag : BOOLEAN) : INTEGER;
VAR count,i : INTEGER;
BEGIN
count := 0;
FOR i:=1 TO n-1 DO
IF n MOD i = 0 THEN
INC(count);
IF print_flag THEN
WriteInt(i);
WriteString(" ")
END
END
END;
IF print_flag THEN WriteLn END;
RETURN count;
END proper_divisors;
 
VAR
buf : ARRAY[0..63] OF CHAR;
i,max,max_i,v : INTEGER;
BEGIN
FOR i:=1 TO 10 DO
WriteInt(i);
WriteString(": ");
proper_divisors(i, TRUE)
END;
 
max := 0;
max_i := 1;
 
FOR i:=1 TO 20000 DO
v := proper_divisors(i, FALSE);
IF v>= max THEN
max := v;
max_i := i
END
END;
 
FormatString("%i with %i divisors\n", buf, max_i, max);
WriteString(buf);
 
ReadChar
END ProperDivisors.</lang>
 
=={{header|Objeck}}==
1,452

edits