Rechercher : dans
Par :

Nombre premier en pascal

Dernière réponse le 22 nov 2009 à 18:12:36 max123456, le 20 jun 2008 à 00:38:12 
 Signaler ce message aux modérateurs

Bonjour,

comment Vérifier si un nombre entier est un nombre premier, en pascal.

un programme s.v.p.

merci bcp d'avance.

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « nombre premier en pascal » dans :
Vérifier si un nombre entier est un nombre premier en C Voir Définition nombre premier Algorithme 1 : les diviseurs compris entre 2 et N-1 seront testés Algorithme 2 : les diviseurs pairs ne seront pas testés, la recherche se limitant aux diviseurs impairs Algorithme 3 : les diviseurs impairs jusqu'à la...
Exercice assembleur x86 nombre premier VoirIntroduction Notions abordées dans cet exercice Enoncé Rappel Corrigé Explication Introduction Ce petit exercice d'assembleur vise les architectures x86 (Processeurs Intel et Amd 32 bits) et utilise la syntaxe de Nasm, un assembleur...
J'ai un ordinateur pour la première fois, je ne connais rien VoirVoici un article qui pourra bien vous aider si c'est la première fois que vous utilisez un ordinateur. Les principaux composants d'un ordinateur y sont détaillés, ainsi que le vocabulaire (jargon informatique de base) qui s'y rapporte. Note d'un...
Adobe Première - Prise en main VoirIntroduction Voici une première approche illustrée d'Adobe Première pour vous permettre d'aborder le montage vidéo avec ce logiciel par des manoeuvres simples. La version utilisée dans cette astuce est la version Pro 1.5 mais la présentation...
Télécharger Adobe Premiere Pro VoirAdobe Premiere est un programme de renom dans le montage et l'édition de vidéos. Il comprend plusieurs outils pratiques et des fonctionnalités complètes. Il permet entre autre d'éditer vidéo et audio avec une multitude d'options. Adobe Premiere...
Représentation des nombres entiers et réels VoirReprésentation d'un nombre dans un ordinateur On appelle représentation (ou codification) d'un nombre la façon selon laquelle il est décrit sous forme binaire. La représentation des nombres sur un ordinateur est indispensable pour que celui-ci...
Système hexadécimal VoirSystème hexadécimal Les nombres binaires étant de plus en plus longs, il a fallu introduire une nouvelle base : la base hexadécimale. La base hexadécimale consiste à compter sur une base 16, c'est pourquoi au-delà des 10 premiers chiffres on a...

1

karbos, le 20 jun 2008 à 00:43:27

Ben tu le divise par tous les entiers inférieurs à lui-même, si t'en as un qui donne un résultat entier différent de 1, il est pas premier.

Répondre à karbos

2

bob, le 20 jun 2008 à 00:47:31

Plusieurs algorithmes sont possibles :
http://fr.wikipedia.org/...
Plus qu'à choisir et à implémenter...

Répondre à bob

3

karbos, le 20 jun 2008 à 00:56:59

A oui tu peux aller plus vite encore si tu parts de la racine du nombre que tu test

Répondre à karbos

4

fahim0788, le 20 jun 2008 à 01:08:51
  • +4

Salut, pour verifier si le nombre n est premier ou pas le principe est de tester tous les nombres inferieur à n qu'on, si le reste de la division de n/i est 0 donc i est un diviseur on compte les diviseurs avec la variable r,a la fin si le programme trouve plus de 2 diviseurs cela veut dire que n admet un diviseur a part 0 et lui même =>n n'est pas premier si non le nombre est premier.

program premier;
uses wincrt;
var n,r,i:integer;
begin
write('Donnez un entier naturel : ');
read(n);
r:=0;
for i:=1 to n do
if n mod i = 0 then r:=r+1;

if r=2 then write('le nombre est premier') else
write('le nombre n'est pas premier');
end.

Rq: cette algorithme peut s'améliorer pour gagner du temps

Répondre à fahim0788

7

max123456, le 20 jun 2008 à 18:18:01
  • +1

Merci fahim, ton programme court et util.

Répondre à max123456

5

karbos, le 20 jun 2008 à 01:50:37
  • +2

J'essaie de proposer mieux mais je connais pas bien la syntaxe en Pascal alors j'm'inspire de ce que Fahim a écrit:

program premier;
uses wincrt;
var n,i,r,t,c:integer;
begin
  write('Donnez un entier naturel : ');         /On pourait tester si c'est un entier 
  read(n);  i:=1;   t:=1;  r:=0;                 /J'ai ajouté t pour 'test' et c pour 'carré'
  while(t=1) do                                /Tant que t ne change pas on refait la boucle 
  { i: = i+1; c:= i*i;                  /incrémentation de i, pas besoin de tester i=1 !
    if  if (c>n) then t:=3;   /si i² dépasse n on a fini le test sans trouver de diviseur
       else(n mod i = 0) then t:=0;  /si le reste de n/i est nul on fini le test
  };                                            /fin de la boucle
  if t=3 then write('le nombre est premier') /conclusion
  else write('le nombre n'est pas premier'); 
end.

Répondre à karbos

9

 havid, le 22 nov 2009 à 18:12:36

Voila un petite touche d'amelioration du programme
program premier;
uses wincrt;
var n,i,t,c:integer;
begin
write('Donnez un entier naturel : '); {*On pourait tester si c'est un entier *}
read(n); t:=1;
if n mod 2 =0 then t:=0;
i:=1; {*J'ai ajouté t pour 'test' et c pour 'carré'*}
while(t=1) do {*Tant que t ne change pas on refait la boucle *}
Begin
i:= i+2; c:= i*i; {*incrémentation de i, pas besoin de tester i=1 ! *}
if (c>n) then t:=3 {*si i² dépasse n on a fini le test sans trouver de diviseur*}
else if (n mod i = 0) then t:=0; {*si le reste de n/i est nul on fini le test*}
End; {*fin de la boucle*}
if t=3 then write('le nombre est premier') {*conclusion*}
else write('le nombre n''est pas premier');
end.

Répondre à havid

6

KX, le 20 jun 2008 à 15:39:58

On peut encore améliorer la recherche en se servant d'un crible d'Erathostène, c'est à dire un tableau, que l'on remplit de tous les multiples des nombres premiers déjà identifiés.

À noter, qu'il faut adapter const n=10000, selon les besoins de la recherche...

program TestPrimalite;

const n=10000;

type crible=array[2..n] of boolean;

procedure Initialiser(var c:crible);
var k:integer;
begin
for k:=2 to n do c[k]:=false;
end;

procedure RayerMultiples(var c:crible;p:integer);
var k:integer;
begin
k:=p+p;
while k<=n do
      begin c[k]:=true; k:=k+p end;
end;

procedure Construire(var c:crible);
var k:integer;
begin
for k:=2 to n do
    if not c[k] then RayerMultiples(c,k);
end;

var c:crible;
    i:integer;
begin
write('Construction de la table d''Erathostene entre 2 et ',n,' : ');
Initialiser(c); Construire(c); writeln('Termine');
while true do
      begin
      writeln;
      write('Entier a tester : ');
      readln(i);
      if c[i] then writeln(i,' n''est pas premier')
              else writeln(i,' est premier');
      writeln;
      end;
end.
La confiance n'exclut pas le contrôle

Répondre à KX

8

fahim0788, le 22 jun 2008 à 01:29:38
  • +1

Salut, cliquez sur problème résoulu svp.

Répondre à fahim0788