 # Project Euler Problem 0005 in ABAP

Project Euler is a website dedicated to computational problems intended to be solved with computer programs.

At the time of this writing, it includes over 400 problems, with a new one added every week.

Problems are of varying difficulty but each is solvable in less than a minute using an efficient algorithm on a modestly powered computer.

I have already solved some of the problem, mainly using J (a language in the APL family) or Python.

Last year I learned ABAP and now, to test my skill with it, I decide to solve some of the Project Euler problem using ABAP.

To be able to execute ABAP programs, I have installed a SAP NetWeaver Trial Version ABAP (Windows) under VirtualBox.

The 5th problem (Smallest multiple) can be solved with the help of the ABAP function GCD:

2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.

What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?

In J the solution is given by

*./1+i.20

232792560

An ABAP solution is below (run the program to see the solution).

It suffice to loop on the number between 1 and 20, accumulating the least common multiple at each loop.

REPORT ZMLA_EULER_005.

DATA: lcm  TYPE F VALUE 1,    “least common multiple

n    TYPE F VALUE 1,

stop  TYPE F VALUE 20,

gcd  TYPE F,

s    TYPE STRING.

WHILE n <= stop.

CALL FUNCTION ‘GCD’

EXPORTING

I_NUMERATOR  = lcm

I_DENOMINATOR = n

IMPORTING

E_GCD        = gcd.

lcm = lcm * n / gcd.      “lcm( a, b ) is a * b / gcd( a, b )

n = n + 1.

ENDWHILE.

s = |The solution is { lcm }|.

WRITE / s.