Proper divisors: Difference between revisions
Content added Content deleted
m (→{{header|Sidef}}: code simplifications) |
(Added Seed7 example) |
||
Line 4,205: | Line 4,205: | ||
(BigInt(1) :: products).filter(_ < n) |
(BigInt(1) :: products).filter(_ < n) |
||
}</lang> |
}</lang> |
||
=={{header|Seed7}}== |
|||
<lang seed7>$ include "seed7_05.s7i"; |
|||
const proc: writeProperDivisors (in integer: n) is func |
|||
local |
|||
var integer: i is 0; |
|||
begin |
|||
for i range 1 to n div 2 do |
|||
if n rem i = 0 then |
|||
write(i <& " "); |
|||
end if; |
|||
end for; |
|||
writeln; |
|||
end func; |
|||
const func integer: countProperDivisors (in integer: n) is func |
|||
result |
|||
var integer: count is 0; |
|||
local |
|||
var integer: i is 0; |
|||
begin |
|||
for i range 1 to n div 2 step succ(n rem 2) do |
|||
if n rem i = 0 then |
|||
incr(count); |
|||
end if; |
|||
end for; |
|||
end func; |
|||
const proc: main is func |
|||
local |
|||
var integer: i is 0; |
|||
var integer: v is 0; |
|||
var integer: max is 0; |
|||
var integer: max_i is 1; |
|||
begin |
|||
for i range 1 to 10 do |
|||
write(i <& ": "); |
|||
writeProperDivisors(i); |
|||
end for; |
|||
for i range 1 to 20000 do |
|||
v := countProperDivisors(i); |
|||
if v > max then |
|||
max := v; |
|||
max_i := i; |
|||
end if; |
|||
end for; |
|||
writeln(max_i <& " with " <& max <& " divisors"); |
|||
end func;</lang> |
|||
{{out}} |
|||
<pre> |
|||
1: |
|||
2: 1 |
|||
3: 1 |
|||
4: 1 2 |
|||
5: 1 |
|||
6: 1 2 3 |
|||
7: 1 |
|||
8: 1 2 4 |
|||
9: 1 3 |
|||
10: 1 2 5 |
|||
15120 with 79 divisors |
|||
</pre> |
|||
=={{header|Sidef}}== |
=={{header|Sidef}}== |