A perfect number is defined as a number for which the sum of all the divisors adds up to the number itself. This examples calculates all perfect numbers up to a given upper bound.
(!******************************************************
Mosel User Guide Example Problems
=================================
file perfect.mos
````````````````
Using the 'forall' loop.
(c) 2008 Fair Isaac Corporation
author: S. Heipcke, 2001
*******************************************************!)
model Perfect
parameters
LIMIT=100
end-parameters
writeln("Perfect numbers between 1 and ", LIMIT, ":")
forall(p in 1..LIMIT) do
sumd:=1
forall(d in 2..p-1)
if p mod d = 0 then ! Mosel's built-in mod operator
sumd+=d ! The same as sum:= sum + d
end-if
if p=sumd then
writeln(p)
end-if
end-do
end-model