Numere Pitagoreice – Problema Rezolvata

Articol Numere Pitagoreice:
http://tutoriale.5c.ro/2012/02/numere-pitagoreice-tipuri-de-numere-pitagoreice-mircea-eugen-selariu/

Problema

Numerele a,b,c, se numesc pitagorice dacă  c*c=a*a+b*b. Să se tipărească toate tripletele (a,b,c) de numere pitagorice, cu 0<a<b<c şi a+b+cn ordonate după suma a+b+c.

Specificarea problemei este:
DATE n; {n-natural; pentru n<12 nu există triplete}
REZULTATE toate tripletele de numere pitagorice (a,b,c) cu proprietatea
0<a<b<c şi a+b+cn.

Numerele a,b,c, se numesc pitagorice dacă  1. Să se tipărească toate tripletele (a,b,c) de numere pitagorice, cu 0<a<b<c şi a+b+cn ordonate după suma a+b+c.
Specificarea problemei este:
DATE n; {n-natural; pentru n<12 nu există triplete} REZULTATE toate tripletele de numere pitagorice (a,b,c) cu proprietatea 0<a<b<c şi a+b+cn.

Numerele a,b,c, se numesc pitagorice dacă  c*c=a*a+b*b. Să se tipărească toate tripletele (a,b,c) de numere pitagorice, cu 0<a<b<c şi a+b+cn ordonate după suma a+b+c.

Specificarea problemei este:

DATE n;{n-natural; pentru n<12 nu există triplete}

REZULTATE toate tripletele de numere pitagorice (a,b,c) cu proprietatea

0<a<b<c şi a+b+cn.

Vom nota prin S suma a+b+c. Se ştie că (3,4,5) este primul triplet de numere pitagorice. În acest caz S ia valori de la 12 la n. Întrucât  3a<S  variabila a ia valori de la 3 la S/3. Apoi 2b<S-a deci b va lua valori de la a+1 la (S-a)/2. Algoritmul pentru rezolvarea problemei este dat în continuare :

	Programul Pascal corespunzător este dat în continuare.

PROGRAM  NRPITAGORICE;	{Programul 1.1.2. Numere pitagorice}
VAR n, 	{    nN;  a+b+cn        }
    S, 	{    S  =  a+b+c          }
    a,b,c, 	{(a,b,c) triplet de numere pitagorice}
	{  0 < a < b < c          }
    k     : integer; 	{ contor }
BEGIN
 WRITELN('Se tipăresc tripletele(a,b,c) de numere pitagorice');
 WRITELN('cu proprietatea: a+b+c<=n, pentru n dat');
 WRITE('Daţi valoarea lui n:'); READLN(n);
 For k:=1 to 4 do writeln;
 k:=0;
 IF n<12
   THEN WRITELN('Nu exista numerele cerute')
   ELSE FOR S:=12 TO n DO
         FOR a:=3 TO S DIV 3 DO
          FOR b:=a+1 TO (S a) DIV 2 DO
            BEGIN
              c:=S a b;
              IF c*c=a*a+b*b THEN BEGIN
                k:=k+1;
                WRITELN('Tripletul (a,b,c)',k:3,'= ',a:3, b:3,c:3);
              END {IF}
            END;
 READLN;
END.

3 Responses

  1. Bogdan says:

    Pentru limbaj de programare in C nu faci?

    • admin says:

      Ma voi ocupa de asta :)

    • cristinaa says:

      #include
      int main ()
      {int n, s, i, a, b, c;
      cin>>n;
      for (i=1; i<=4; i++)
      cout<<endl;
      i=0;
      if (n<12)
      cout<<"Nu exista numere pitagorice."<<endl;
      else
      for (s=12; s<=n; s++)
      for (a=3; a<=s/3; a++)
      for (b=a+1; b<=(s-a)/2; b++)
      {c=s-a-b;
      if (c*c==a*a+b*b)
      {i=i+1;
      cout<<"Tripletul a, b, c este reprezentat de numerele "<<i<<") "<<a<<", "<<b<<", respectiv "<<c<<endl;}}
      return 0;}
      asta e varianta pentru C

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>