Product of min and max prime factors: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) (Add CLU) |
|||
Line 122: | Line 122: | ||
91 46 93 94 95 6 9409 14 33 10 |
91 46 93 94 95 6 9409 14 33 10 |
||
</pre> |
</pre> |
||
=={{header|CLU}}== |
|||
<syntaxhighlight lang="clu">sieve = proc (max: int) returns (sequence[int]) |
|||
prime: array[bool] := array[bool]$fill(2,max-1,true) |
|||
p: int := 2 |
|||
while p*p <= max do |
|||
for c: int in int$from_to_by(p*p, max, p) do |
|||
prime[c] := false |
|||
end |
|||
p := p + 1 |
|||
end |
|||
primes: array[int] := array[int]$[] |
|||
for i: int in array[bool]$indexes(prime) do |
|||
if prime[i] then array[int]$addh(primes, i) end |
|||
end |
|||
return(sequence[int]$a2s(primes)) |
|||
end sieve |
|||
factors = proc (primes: sequence[int], n: int) returns (sequence[int]) |
|||
if n=1 then return(sequence[int]$[1]) end |
|||
fac: array[int] := array[int]$[] |
|||
for p: int in sequence[int]$elements(primes) do |
|||
if n // p = 0 then array[int]$addh(fac, p) end |
|||
end |
|||
return(sequence[int]$a2s(fac)) |
|||
end factors |
|||
start_up = proc () |
|||
MAX = 100 |
|||
po: stream := stream$primary_output() |
|||
primes: sequence[int] := sieve(MAX) |
|||
for i: int in int$from_to(1, MAX) do |
|||
facs: sequence[int] := factors(primes, i) |
|||
prod: int := sequence[int]$bottom(facs) * sequence[int]$top(facs) |
|||
stream$putright(po, int$unparse(prod), 6) |
|||
if i//10 = 0 then stream$putl(po, "") end |
|||
end |
|||
end start_up</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}}== |