!Program program euler implicit none integer :: N, ans N = 600851475143 ans = 0 call bigpfac(N, ans) print *, ans end program euler subroutine isprime(x, output) implicit none integer :: i, x, output output = 1 do i=2, int(sqrt(real(x))) if (mod(x,i) == 0) then output = 0 exit end if end do end subroutine isprime subroutine bigpfac(x, output) implicit none integer :: i, x, output, p output = 0 do i=3,x,2 call isprime(i, p) if (x == 1) then exit end if if ((p == 1) .and. (mod(x,i) == 0)) then output = i x = x / i end if end do end subroutine bigpfac
Sunday, August 11, 2013
Return to Problem 3 with Fortran
During the original challenge, I used the J language on Problem 3 - J
was a good language for problem 3, because the solution took 4
characters to write...but J is a good language for many Project Euler
problems, so it was silly to use it so early. During the challenge, I
didn't really get to use Fortran...it ended up finding an analytic
solution, so the Fortran code I wrote was reduced to being nothing more
than a multiplication. So, I decided to revisit problem 3, using Fortran
this time. Now that I have gotten used to it to a certain extent,
Fortran isn't the worst programming language (hey, its better than
Whenever which I used yesterday), and my solution did indeed run more
quickly than I expected it to (~6ms, even though I wasn't exactly doing
the most efficient prime factoring in the world)
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment