3

I'm trying to write a Fortran code which checks if a user input number is a prime or not. The code is given below,

program cp
implicit none

integer(kind=8) :: nmb, ind
real*16 :: sqnmb, real_nmb

print*, "Largest value for a is ", huge(nmb)

DO
    print *,"Enter the number larger than 0:"
    read (*,*) nmb

    IF ( nmb <= 0) THEN 
        print *, "Please enter a number larger than 0."
    END IF
    
    IF ( nmb > 0) THEN 
        EXIT
    END IF
    
END DO 

sqnmb = sqrt(real(nmb))
do ind= 2, int(sqnmb), 1
    IF (mod(nmb,ind) == 0) THEN 
        print *, "The number", nmb ,"is not a prime, it is divisible by",ind
        STOP
    END IF
end do

print *, "The number", nmb ,"is a prime"
end program cp

The program works fine for all numbers below 9223372036854775807(19 digits) which is the largest number that can be defined with the integer(kind=8) type. However, I want to calculate for numbers with 25 digits. How can we define larger integers in Fortran?

brownser
  • 545
  • 7
  • 25

0 Answers0