40 lines
1.0 KiB
Fortran
40 lines
1.0 KiB
Fortran
program pure_and_elemental_exercise
|
|
implicit none
|
|
|
|
integer, parameter :: PRIMES(*) = [2, 3, 5, 7, 11]
|
|
integer, parameter :: REAL_ANSWER = 1872
|
|
integer :: answer
|
|
|
|
! Replace '42' with an expression using elemental functions
|
|
! that calculates the equivalent of the following:
|
|
! answer = 0
|
|
! do i = 1, size(PRIMES)
|
|
! answer = answer + (primes(i) * 3)**2
|
|
! end do
|
|
answer = sum(square(multiply_by_three(PRIMES)))
|
|
! Note: intrinsic operators are already elemental, so the following works too
|
|
! answer = sum((PRIMES * 3)**2)
|
|
|
|
if (answer == REAL_ANSWER) then
|
|
print *, "You got it! :)"
|
|
else
|
|
print *, answer
|
|
print *, "Not passing yet :("
|
|
end if
|
|
contains
|
|
! put your functions down here
|
|
elemental function multiply_by_three(number) result(multiplied_by_three)
|
|
integer, intent(in) :: number
|
|
integer :: multiplied_by_three
|
|
|
|
multiplied_by_three = number * 3
|
|
end function
|
|
|
|
elemental function square(number) result(squared)
|
|
integer, intent(in) :: number
|
|
integer :: squared
|
|
|
|
squared = number ** 2
|
|
end function
|
|
end program
|