Primalita' In Fortran 95
Ragazzi Ho provato a realizzare in Fortran una funzione esterna alla main che dato un vettore di interi mi restituisce True se il numero di primi e' maggiore di 5 False Altrimenti
Il Codice che ho scritto e' il seguente:
Tuttavia mi genera un errore alla riga seguente
l'errore e': Attempt to call a subroutine as if it were an integer(kind=3) function
Un Aiutino?
Il Codice che ho scritto e' il seguente:
logical function prime(M,dim) result(p)
integer,intent(in) :: dim
integer,dimension(100),intent(in) :: M
integer :: i,j,k
logical :: primo
i=1
j=0
do i =1,dim
primo =.false.
if(M(i) .ge. 2) then
primo =.true.
k=2
do while(k .lt. M(i) .and. primo)
primo = M(i)-(M(i)/k) * k .ne. 0
k=k+1
end do
end if
if(primo)then
j=j+1
end if
end do
p = j .gt. 5
end function
program Prime_Vector
Integer, dimension(100) :: C
integer :: n,i
write(*,*) "inserisci dimensione vettore"
read(*,*) n
if(n .gt. 0 .and. n. le. 100) then
do i=1,n
read(*,*) C(i)
end do
write(*,*) prime(C,n)
end if
end program
Tuttavia mi genera un errore alla riga seguente
write(*,*) prime(C,n)
l'errore e': Attempt to call a subroutine as if it were an integer(kind=3) function
Un Aiutino?
Risposte
Ragazzi Mea Culpa ^^
non ho dichiarato nel program il tipo della funzione
inserendo infatti Logical, External :: prime
tutto torna ^^
E poiche' non avevo inserito IMPLICIT NONE il compilatore non mi ha restituito errore ed ha assegnato alla funzione il tipo di default ovvero REAL ^^
non ho dichiarato nel program il tipo della funzione
inserendo infatti Logical, External :: prime
tutto torna ^^
E poiche' non avevo inserito IMPLICIT NONE il compilatore non mi ha restituito errore ed ha assegnato alla funzione il tipo di default ovvero REAL ^^