retour au sujet

Examen Informatique LTM 2003

Exemple de solution

Question 1


	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

Question 2


	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

Question 3


	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

Question 4

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).


retour au sujet Patrick TRAU, ULP - IPST mars 03