You are on page 1of 5

ALGORITMI FUNDAMENTALI

Descompunerea in factori primi Numar prim

program divizor; uses wincrt; var n,d:byte; begin readln(n); d:=2 repeat if n mod d = 0 then write (d); n:= n div d else d:= d+1; until n=1; end.

program prim; uses wincrt; var f:boolean; n,i:byte; begin readln (n); f:= true; for i := 1 to trunc (sqrt(n)) do if n mod i =0 then f:= false; if f then write (da) else write(nu); end.

Palindrom program pali; uses wincrt; var v,x,n: word; begin readln (n); v:= n; x:= 0; repeat x:= x*10 + n mod 10; n:= n div 10; until n=0; if v=n then write (da) else write(nu); end.

Suma de control program suma; uses wincrt; var s,n: byte; begin readln (n); while n>9 do s:= 0; repeat s:= s + n mod 10; n:= n div 10; until n=0; n:=s; write (n); end.

Numar perfect program perfect; uses wincrt; var i:byte; n,s:word; begin readln (n); s:=1; for i:= 2 to n div 2 do if n mod i = 0 then s:= s+1; if s=n then write (da) else write (nu); end.

Fibonaci program fibo; uses wincrt; var a,b,x,y,z :word; begin readln (a,b); x:=1; y:=1; while x+y<=b do z:= x+y; x:= y; y:=z; if (x=a) and (y=b) then write (da) else write (nu); end. Pasareasca program pasaresc; uses wincrt; var a,b:string; i: byte; begin; readln(a); b:=; for i:= 1 to length (a) do if upcase(a[i]) in (A,E,I,O,U) then b:= b+ a*i++p+a*i+ else b:=b +a[i]; write (b); end.

Euclid program cmmdc; uses wincrt; var a,b,d, i,r:word; begin readln (a,b); d:=a; i:=b; while d mod i <> 0 do r:= d mod i; d:=i; i:=r; write (i); end.

Permutarea circulara stanga cu o pozitie program permutare; uses wincrt; type sir=array [1..100] of integer; var a:sir; aux: integer; n,i: byte; begin readln(n); for i:= 1 to n do write (a*,i,+=); readln (a[i]); aux:=a[1]; for i:= 2 to n do a[i-1]:=a[i]; a[n]:=aux; for i:=1 to n do write (a[i]); end.

Sortare prin selectie program selectie; uses wincrt; type sir=array [1..100] of integer; var a:sir; aux: integer; n,i,j: byte; begin readln(n); for i:= 1 to n do write (a*,i,+=); readln (a[i]); for i:= 1 to n-1 do for j:=i+1 to n do if a[i]>a[j] then aux:=a[i]; a[i]:=a[j]; a[j]:=aux; for i:=1 to n do write (a*i+, ); end. Cartoforul program cartofor; uses wincrt; type sir=array [1..100] of integer; var a:sir; t: integer; n,i,j: byte;; begin readln(n); readln (a[1]); for i:=2 to n do readln(t); j:=i-1; while(j>0)and(a[j]>t) do a[j+1]:=a[j]; j:=j-1; a[j]:=t; for i:=1 to n do write (a*i+, ); end.

Metoda bulelor program bule; uses wincrt; type sir=array [1..100] of integer; var a:sir; aux: integer; n,i: byte; f:boolean; begin readln(n); for i:= 1 to n do write (a*,i,+=); readln (a[i]); repeat f:=true; for i:=1 to n-1 do if a[i]>a[i+1] then aux:=a[i]; a[i]:=a[i+1]; a[i+1]:=aux; f:=false; until f; for i:=1 to n do write (a*i+, ); end.

Cautarea binara program binar; uses wincrt; type sir=array [1..100] of integer; var a:sir; v: integer; n,i,m,li,lf: byte; begin readln(n); for i:= 1 to n do write (a*,i,+=); readln (a[i]); readln (v); li:=1; lf:=n; m:=(li+lf) div 2; while (v<>a[m])and(li<=lf)do if v<a[m] then lf:=m-1 else m:=(li+lf)div 2; if v=a[m] then write(v, se gaseste in sir pe pozitia ,m) else write(v, nu se gaseste in sir); end.

Ciurul lui Eratostene program ciur; uses wincrt; type sir=array [1..100] of integer; var a:sir; n,i,j: byte; begin readln(n); for i:= 1 to n do a[i]:=I; for i:= 2 to trunc (sqrt(n)) do if a[i]<>0 then for j:=2*i to n do if a[j] mod a[i]=0 then a[j]:=0; for i:= 2 to n do if a[i] <> 0 then write (i, ); end.

You might also like