Program S1;
Uses crt;
Var
ft : text;
i,a,b,nb,n : longint;
chi,chn,ligne : string;
ok : boolean;
//*****************************************
Function premier(n:longint) : boolean;
Var
i,nbd : longint;
Begin
nbd := 0;
For i:=1 To (n Div 2) Do
If (n Mod i=0) Then
nbd := nbd+1;
If (nbd=1) Then
premier := true
Else
premier := false;
End;
//*****************************************
Procedure mersenne(m:longint;Var n:longint;Var ok:boolean);
Begin
m := m+1;
n := 0;
ok := true;
While (ok) And (m>1) Do
If (m Mod 2 =0) Then
Begin
n := n+1;
m := m Div 2;
End
Else
ok := false;
If (ok=true) Then
If (premier(n)=false) Then
ok := false
Else
ok := true;
End;
//*****************************************
Procedure affiche(Var ft:text);
Var
ligne : string;
Begin
reset(ft);
While (Not(eof(ft))) Do
Begin
readln(ft,ligne);
writeln(ligne);
End;
close(ft);
End;
//*****************************************
Begin
assign(ft,'mersenne.txt');
rewrite(ft);
Repeat
write('Donner A: ');
readln(a);
write('Donner B: ');
readln(b);
Until (a>2) And (a<b) And (b<50000);
nb := 0;
For i:=a To b Do
Begin
mersenne(i,n,ok);
If (ok) Then
Begin
nb := nb+1;
str(i,chi);
str(n,chn);
ligne := 'M= '+chi+' =2^'+chn +' -1';
writeln(ft,ligne);
End;
End;
clrscr;
writeln;
writeln(' Nbres de Mersennes compris entre [',a,',',b,'] sont : ');
writeln('-------------------------------------------------------------------------');
writeln;
If (nb=0) Then
writeln('Il n''y a pas aucun nombre de Mersenne ')
Else
affiche(ft);
End.
Inscription à :
Publier les commentaires (Atom)