program preliminaire implicit none integer pg,pp,reste call saisie(pg,pp) if (reste(pg,pp).eq.0) then print *,"multiples" else print *,"pas multiples" endif stop end program preliminaire subroutine saisie(pg,pp) implicit none integer pg,pp print *,'premier nombre ?' read *,pp print *,'second nombre ?' read *,pg if (pp.gt.pg) call echange(pp,pg) end subroutine saisie subroutine echange(x,y) implicit none integer x,y,z z=x x=y y=z end subroutine echange integer function reste(grd,ptt) implicit none integer grd,ptt,quo quo=(grd/ptt)*ptt reste=grd-quo end function reste
program euclid implicit none integer pg,pp,prec,dern,r,reste call saisie(pg,pp) prec=pg dern=pp r=1234 do while(r.ne.0) r=reste(prec,dern) prec=dern dern=r enddo if (prec.eq.1) then print *,'ils sont premiers entre eux' else print *,'non premiers, leur PGCD est',prec endif end program euclid subroutine saisie(pg,pp) implicit none integer pg,pp print *,'premier nombre ?' read *,pp print *,'second nombre ?' read *,pg if (pp.gt.pg) call echange(pp,pg) end subroutine saisie subroutine echange(x,y) implicit none integer x,y,z z=x x=y y=z end subroutine echange integer function reste(grd,ptt) implicit none integer grd,ptt,quo quo=(grd/ptt)*ptt reste=grd-quo end function reste
program premiers implicit none integer max parameter (max=1023) integer T(max),i,mult T(1)=1 do 10 i=2,max t(i)=-t(i-1)+1 !!alternativement 0 et 1 10 continue T(2)=1; !!j'avais oublié dans le sujet que 2 est pair mais premier do 20 i=3,int(sqrt(max+1.0)),2 if (T(i).eq.1) then mult=i*3 !!*2 inutile car pair do while (mult.le.max) T(mult)=0; mult=mult+(i*2) !!*5, *7, .... enddo endif 20 continue print *,'les nombres premiers de 1 à',max,'sont :' do 30 i=1,max if (T(i).eq.1) print *,i 30 continue end program premiers
Le sous-programme ttt reçoit en premier argument un premier tableau rempli de nb1 composantes réelles, et ce nombre nb1. Ce tableau ne sera pas modifié. Il reçoit également en argument deux autres tableaux tab2 et tab3, dont ttt écrasera le contenu et définira leur nombre de composantes.
ttt calcule la moyenne des composantes du premier tableau, puis copie toutes les composantes plus petites (ou égales) dans tab2, les plus grandes dans tab3 (et calcule leur taille).
Patrick TRAU,
ULP - IPST mars 03