Initializing help system before first use

Perfect numbers


Type: Programming
Rating: 2 (easy-medium)
Description: 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.
  • nested 'forall' loops
  • use of 'mod'
File(s): perfect.mos


perfect.mos
(!******************************************************
   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