- #1

- 1

- 0

## Main Question or Discussion Point

Hi all, I just started learning computer languages and Im having an extremely difficult time understanding it all. I need to write a function which gives the next power of three after input n.

Logical Function next_power_three(n)

Integer::n,p

if (n<1) then

next_power_three=.false.

return

endif

p=1

do while (.not. p>n)

if (n==p) then

next_power_three=.true.

p=p+1

return

Else

p=3*p

endif

enddo

next_power_three=.false.

endfunction

program test_next_power_three

integer:: is_power_of_three

print *,'02 ->', next_power_three(2)

print *,'03 ->', next_power_three(3)

print *,'28 ->',next_power_three(28)

endprogram

This is what I have, but i cant see where i went wrong. Any help would be greatly appreciated.

Logical Function next_power_three(n)

Integer::n,p

if (n<1) then

next_power_three=.false.

return

endif

p=1

do while (.not. p>n)

if (n==p) then

next_power_three=.true.

p=p+1

return

Else

p=3*p

endif

enddo

next_power_three=.false.

endfunction

program test_next_power_three

integer:: is_power_of_three

print *,'02 ->', next_power_three(2)

print *,'03 ->', next_power_three(3)

print *,'28 ->',next_power_three(28)

endprogram

This is what I have, but i cant see where i went wrong. Any help would be greatly appreciated.