Product of min and max prime factors: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) (Add MAD) |
Not a robot (talk | contribs) (Add Modula-2) |
||
Line 677: | Line 677: | ||
0 O(6),O(7),O(8),O(9),O(10) |
0 O(6),O(7),O(8),O(9),O(10) |
||
END OF PROGRAM</syntaxhighlight> |
END OF PROGRAM</syntaxhighlight> |
||
{{out}} |
|||
<pre> 1 4 9 4 25 6 49 4 9 10 |
|||
121 6 169 14 15 4 289 6 361 10 |
|||
21 22 529 6 25 26 9 14 841 10 |
|||
961 4 33 34 35 6 1369 38 39 10 |
|||
1681 14 1849 22 15 46 2209 6 49 10 |
|||
51 26 2809 6 55 14 57 58 3481 10 |
|||
3721 62 21 4 65 22 4489 34 69 14 |
|||
5041 6 5329 74 15 38 77 26 6241 10 |
|||
9 82 6889 14 85 86 87 22 7921 10 |
|||
91 46 93 94 95 6 9409 14 33 10</pre> |
|||
=={{header|Modula-2}}== |
|||
<syntaxhighlight lang="modula2">MODULE MinMaxPrimeFactors; |
|||
FROM InOut IMPORT WriteCard, WriteLn; |
|||
CONST Max = 100; |
|||
VAR isPrime: ARRAY [2..Max] OF BOOLEAN; |
|||
n: CARDINAL; |
|||
PROCEDURE Sieve; |
|||
VAR prime, composite: CARDINAL; |
|||
BEGIN |
|||
FOR prime := 1 TO Max DO isPrime[prime] := TRUE END; |
|||
prime := 2; |
|||
WHILE prime * prime <= Max DO |
|||
composite := prime * prime; |
|||
WHILE composite <= Max DO |
|||
isPrime[composite] := FALSE; |
|||
composite := composite + prime |
|||
END; |
|||
INC(prime) |
|||
END |
|||
END Sieve; |
|||
PROCEDURE LowFactor(n: CARDINAL): CARDINAL; |
|||
VAR factor: CARDINAL; |
|||
BEGIN |
|||
IF n = 1 THEN RETURN 1 END; |
|||
FOR factor := 2 TO Max DO |
|||
IF isPrime[factor] AND (n MOD factor = 0) THEN RETURN factor END |
|||
END |
|||
END LowFactor; |
|||
PROCEDURE HighFactor(n: CARDINAL): CARDINAL; |
|||
VAR factor: CARDINAL; |
|||
BEGIN |
|||
IF n = 1 THEN RETURN 1 END; |
|||
FOR factor := n TO 2 BY -1 DO |
|||
IF isPrime[factor] AND (n MOD factor = 0) THEN RETURN factor END |
|||
END |
|||
END HighFactor; |
|||
BEGIN |
|||
Sieve; |
|||
FOR n := 1 TO Max DO |
|||
WriteCard(LowFactor(n) * HighFactor(n), 6); |
|||
IF n MOD 10 = 0 THEN WriteLn END |
|||
END |
|||
END MinMaxPrimeFactors.</syntaxhighlight> |
|||
{{out}} |
{{out}} |
||
<pre> 1 4 9 4 25 6 49 4 9 10 |
<pre> 1 4 9 4 25 6 49 4 9 10 |