Product of min and max prime factors: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) (Add Cowgol) |
Not a robot (talk | contribs) (Add Draco) |
||
Line 259: | Line 259: | ||
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|Draco}}== |
|||
<syntaxhighlight lang=draco>proc sieve([*]bool prime) void: |
|||
word p, c, max; |
|||
max := dim(prime,1)-1; |
|||
prime[0] := false; |
|||
prime[1] := false; |
|||
for p from 2 upto max do prime[p] := true od; |
|||
for p from 2 upto max/2 do |
|||
for c from p*2 by p upto max do |
|||
prime[c] := false |
|||
od |
|||
od |
|||
corp |
|||
proc lo_fac([*]bool prime; word n) word: |
|||
word i; |
|||
if n=1 then 1 |
|||
else |
|||
i := 2; |
|||
while i<=n and not (prime[i] and n%i=0) do i := i + 1 od; |
|||
i |
|||
fi |
|||
corp |
|||
proc hi_fac([*]bool prime; word n) word: |
|||
word i; |
|||
if n=1 then 1 |
|||
else |
|||
i := n; |
|||
while i>=2 and not (prime[i] and n%i=0) do i := i - 1 od; |
|||
i |
|||
fi |
|||
corp |
|||
proc main() void: |
|||
word i, MAX = 100; |
|||
[MAX+1]bool prime; |
|||
sieve(prime); |
|||
for i from 1 upto MAX do |
|||
write(lo_fac(prime, i) * hi_fac(prime, i):6); |
|||
if i%10 = 0 then writeln() fi |
|||
od |
|||
corp</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}}== |