Se connecter avec
S'enregistrer | Connectez-vous

Décomposition en facteur premier (ADA)

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte

En fait je pense etre arriver à trouver tous les diviseur d'un nombre entier. Mais pas les diviseur premier, et je ne sais pas non plus comment faire pour les restituer à la fin.
Voici ce que j'ai réussi à faire :

with ada.text_io, ada.integer_text_io;
i,p,k = integer;
ada.text_io.put("saisie d'un nombre ="); ada.integer_text_io.get(i);
ada.text_io.new_line;
p:=2;
while p<=i/2 loop
if i rem p = 0 then
k:=i/p;
ada.integer_text_io.put(k);
ada.text_io.put("est un diviseur de :"); ada.integer_text_io.put(i);
p:=p+1;
else
p:=p+1;
end if;

En fait je pense etre arriver à trouver tous les diviseur d'un nombre entier. Mais pas les diviseur premier, et je ne sais pas non plus comment faire pour les restituer à la fin.
Voici ce que j'ai réussi à faire :

with ada.text_io, ada.integer_text_io;
i,p,k = integer;
ada.text_io.put("saisie d'un nombre ="); ada.integer_text_io.get(i);
ada.text_io.new_line;
p:=2;
while p<=i/2 loop
if i rem p = 0 then
k:=i/p;
ada.integer_text_io.put(k);
ada.text_io.put("est un diviseur de :"); ada.integer_text_io.put(i);
p:=p+1;
else
p:=p+1;
end if;

J'ai modifié mon algorithme. Pouvez vous me dire se que vous en pensez?

with ada.text_io, ada.integer_text_io;
i,p,k = integer;
ada.text_io.put("saisie d'un nombre ="); ada.integer_text_io.get(i);
ada.text_io.new_line;
p:=2;
while p<=i/2 loop
if i rem p = 0 then
ada.integer_text_io.put(p);
ada.text_io.put("est un facteur premier de :");
ada.integer_text_io.put(i);
ada.text_io.new_line;
else
p:=p+1;
end if;
end loop;


Merci

J'ai revu mon programme. Celui ci est il correct?


with ada.text_io, ada.integer_text_io;
i,p,k = integer;
index = integer;
ada.text_io.put("saisie d'un nombre ="); ada.integer_text_io.get(i);
ada.text_io.new_line;
tableau : array(1..i) of integer;
index:=1;
begin
k:=i;
p:=2;
while p<=k/2 loop -- recherche des facteurs premiers
if i rem p = 0 then -- Calcul du reste de la division de i par p
tableau(index):=p;
index:=index+1;
ada.integer_text_io.put(p);
ada.text_io.put("est un facteur premier de :");
ada.integer_text_io.put(i);
ada.text_io.new_line;
k:=k/p;
else
p:=p+1;
end if;
end loop;
-- Affichage du résultat
ada.integer_text_io.put(i);
ada.text_io.put("=");
ada.integer_text_io.put(tableau(1));
for index in tableau'first+1..index-1 loop
ada.text_io.put("*");
ada.integer_text_io.put(tableau(index));
end loop;
ada.text_io.new_line;
end;
Lassé par la pub ? Créez un compte
Tom's guide dans le monde