Voici la solution la plus simple
Fonction CarreParfait(N: Entier): Booleen
Variable A: Entier; parfait: Booleen
Debut
A=:0
parfait:=faux
TantQue(N>=0 et A*A<=N et parfait=faux) Faire
DebutTantQue
Si (A*A=N) Alors parfait=:vrai
A:=A+1
FinTantQue
CarreParfait:=parfait
Fin
Algorithme N_Carre_Parfait
Variable N: Entier
Debut
Ecrire('Donner un Entier
lire(N)
Si (CarreParfait(N)=vrai) Alors Ecrire('Cet Entier est un carre parfait'); ²
Sinon Ecrire ('Cet Entier n''est pas un carre Prafait'); ²
Fin
Voici le programme en C
#include <stdio.h>
#include <stdlib.h>
int CarreParfait(int N)
{
int A=0;
int Perfect=0;
while( N>=0 && A*A<=N && Perfect==0)
{
if(A*A==N) Perfect=1;
A++;
}
return Perfect;
}
int main()
{ int N;
printf("Introduisez Un entier\n");
scanf("%d",&N);
if(CarreParfait(N)==0) printf("\n Cet Entier n'est pas un Carre Parfait !\n");
else printf("\n Cet Entier est un Carre Parfait !\n");
return 0;
}