Corrigé C10. Enoncé

Exercice 1 : Variétés

a) Action Prem

    ACTION Prem(Nbr, Bool)
    VAR     Nbr, J, N, Q     : ENTIER
        Bool     : BOOLEEN
    DEBUT
        N := Nbr Div 2
        J := 2
        Bool := VRAI
        TANTQUE J < N ET Bool :
            Q := Nbr div 2
            SI J*Q = Nbr : Bool := FAUX SINON J := J + 1 FSI
        FINTANTQUE
    FIN

b) Action Carré

    ACTION Carre(Nbr, Bool)
    VAR     Nbr, J, N : ENTIER
        Bool : BOOLEEN
    DEBUT
        SI Nbr = 1 : Bool := VRAI
        SINON
            N := Nbr Div 2
            J := 2
            Bool := VRAI
            TANTQUE J <= N ET NON Bool :
                SI J*J = Nbr :
                    Bool := FAUX
                SINON J := J + 1 FSI
            FINTANTQUE
        FSI
    FIN

c) Action Pair

    ACTION Pair(Nbr, Estpair)
    VAR     Nbr, Q : ENTIER
        Estpair : BOOLEEN
    DEBUT
        Estpair := FAUX
        Q := Nbr div 2
        SI Q*2 = Nbr :
            Estpair := VRAI
        FSI
    FIN

d) Action Nbdiv

    ACTION Nbdiv(Nbr, Nbdiv)
    VAR     N, Nbr, J, Nbdiv, Q : ENTIER
    DEBUT
        SI Nbr = 1 : Nbdiv := 1
        SINON
            N := Nbr Div 2
            Nbdiv := 2
            J := 2
            TANTQUE J < N :
                Q := Nbr DIV J
                SI Q*J = Nbr :
                    Nbdiv := Nbdiv + 1
                FSI
                J := J + 1
            FINTANTQUE
        FSI
    FIN

Algorithme répondant aux questions posées

    ALGORITHME Unseul
    VAR    N, Nbre, I, I1, I2, Dernierimpair, Nb : ENTIER
        Estpair, Exist, Oui1, Oui2, Oui3      : BOOLEEN
    DEBUT
        I1, I2 := 0
        Oui1, Oui2, Oui3 := VRAI
        LIRE(N)
        POUR I=1, N :
            LIRE(Nbre)
            SI Oui1 :
                Prem(Nbre, Bool)
                SI Bool :
                    I1 := I1 + 1
                    SI I1 = 3 :
                        ECRIRE('3-ième nombre premier :', Nbre)
                        Oui1 := FAUX
                    FSI
                FSI
            FSI
            SI Oui2 :
                Carré(Nbre, Bool)
                SI Bool :
                    I2 := I2 + 1
                    SI I2 = 2 :
                        ECRIRE('2-ième carré parfait', Nbre)
                        Oui2 := FAUX
                    FSI
                FSI
            FSI
            SI Oui3 :
                Pair(Nbre, Estpair)
                SI Estpair :
                    Nbdiv(Nbre, Nb)
                    ECRIRE('Le premier nombre pair a : ', Nb,
                'diviseurs')
                    Oui3 := FAUX
                FSI
            FSI
       
            Pair(Nbre, Estpair)
            SI NON Estpair :
                Dernierimpair := Nombre
                Exist := VRAI
            FSI
        FINPOUR
        SI Exist :
            Nbdiv(Dernierimpair, Nb)
            ECRIRE('Le dernier nombre impair a ', Nb, 'diviseurs')
        SINON ECRIRE (' Pas de nombre impair)
        FSI
    FIN
   
Exercice 2 : Norme euclidienne

    ALGORITHME Euclide
    VAR     X, S, Normax     : REEL
        N, I, J, P    : ENTIER
    DEBUT
        LIRE(P) ; LIRE(N)
        Normax := 0
        POUR I=1, P :
            { Calcul de la norme euclidienne }
            S := 0
            POUR J=1, N
                LIRE(X)
                S := S + X*X
            FINPOUR
            SI S > Normax :
                Rang := P
                Normax := S
            FSI
        FINPOUR
        ECRIRE(Rang, Normax)
    FIN

Exercice 3 : Id ?

Trace pour X=3 ; N=4

    Y(1, P) donne P := 1
    W :=3
    S := 1 + 3/1

    Y(2, P) donne P := 2
    W :=32= 9
    S := 1 + 3/1 + 9/2

    Y(3, P) donne P := 6
    W :=33=27
    S := 1 + 3/1+ 9/2 + 27/6

    Y(4, P) donne P := 24
    W :=34 = 81
    S := 1 + 3/1+ 9/2 + 27/6+81/24

Le programme calcule la somme ( xi / i ! )