Product of min and max prime factors: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) (Add BASIC) |
Not a robot (talk | contribs) (Add Cowgol) |
||
Line 196: | Line 196: | ||
9 82 6889 14 85 86 87 22 7921 10 |
9 82 6889 14 85 86 87 22 7921 10 |
||
91 46 93 94 95 6 9409 14 33 10</pre> |
91 46 93 94 95 6 9409 14 33 10</pre> |
||
=={{header|Cowgol}}== |
|||
<syntaxhighlight lang="cowgol">include "cowgol.coh"; |
|||
const MAX := 100; |
|||
var prime: uint8[MAX+1]; |
|||
typedef N is @indexof prime; |
|||
sub Sieve() is |
|||
prime[0] := 0; |
|||
prime[1] := 0; |
|||
MemSet(&prime[2], 1, @bytesof prime-2); |
|||
var p: N := 2; |
|||
while p*p <= MAX loop |
|||
var c: N := p*p; |
|||
while c <= MAX loop |
|||
prime[c] := 0; |
|||
c := c + p; |
|||
end loop; |
|||
p := p + 1; |
|||
end loop; |
|||
end sub; |
|||
sub LowFactor(n: N): (f: N) is |
|||
if n == 1 then f := 1; return; end if; |
|||
f := 2; |
|||
while f <= n loop |
|||
if prime[f] == 1 and n%f == 0 then return; end if; |
|||
f := f + 1; |
|||
end loop; |
|||
end sub; |
|||
sub HighFactor(n: N): (f: N) is |
|||
if n == 1 then f := 1; return; end if; |
|||
f := n; |
|||
while f >= 2 loop |
|||
if prime[f] == 1 and n%f == 0 then return; end if; |
|||
f := f - 1; |
|||
end loop; |
|||
end sub; |
|||
Sieve(); |
|||
var i: N := 1; |
|||
while i <= MAX loop |
|||
print_i16(LowFactor(i) as uint16 * HighFactor(i) as uint16); |
|||
if i % 10 == 0 |
|||
then print_nl(); |
|||
else print_char('\t'); |
|||
end if; |
|||
i := i + 1; |
|||
end loop;</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|Factor}}== |
=={{header|Factor}}== |