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 Example Problems                              *
  * ======================                              *
  *                                                     *
  * file perfect.mos                                    *
  * ````````````````                                    *
  * Example for the use of the Mosel language           *
  * (Calculation of perfect numbers)                    *
  *                                                     *
  * A number is called perfect if its value equals the  *
  * sum of its divisors, except for itself.             *
  *                                                     *
  * (c) 2008 Fair Isaac Corporation                     *
  *     author: S. Heipcke, 2001                        *
  *******************************************************!)

model Perfect                  ! Start a new model

parameters
 LIMIT=100                     ! Search for perfect numbers in 1..LIMIT
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 
       sumd+=d 
     end-if
   if p=sumd then 
     writeln(p) 
   end-if 
 end-do

end-model