Sunteți pe pagina 1din 4

Algoritmi cu date din tipurile simple

( int , float , double )

Problema 1:

Sa se determine cel mai mare divizor comun (c.m.m.d.c.) si cel mai mic multiplu
comun (c.m.m.m.c.) a doua numere intregi citite de tastatura. Cmmdc se va calcula
folosind cele doua variante:
ÿ algoritmul lui Euclid
ÿ folosind relatia de mai jos:
cmmdc(a-b,b), daca a > b
cmmdc(x,y) = cmmdc(a,b-a), daca a < b
a, daca a = b

#include <iostream.h>
void main(void)
{
int a,b,x,y,r,cmmdc1,cmmdc2,cmmmc;
cout<<"Dati primul numar ";cin>>a;
cout<<"Dati al doilea numar ";cin>>b;
// calculam c.m.m.d.c. folosind algoritmul lui Euclid
x=a;y=b;
r=a%b;
while(r!=0)
{
a=b;
b=r;
r=a%b;
}
cmmdc1=b;
cout<<"Cmmdc este "<<cmmdc1<<endl;
// calculam c.m.m.d.c. folosind relatia data
while(a!=b)
if(a>b)
a=a-b;
else
if(a<b)
b=b-a;
cmmdc2=a;
cout<<"Cmmdc este "<<cmmdc2<<endl;
cmmmc=(x*y)/cmmdc1;
cout<<"Cmmmc este "<<cmmmc<<e ndl;
}

Problema 2:
Sa se determine toti divizorii unui numar intreg citit de la tastatura.

#include <iostream.h>
void main(void)
{
int n,i;
cout<<"Dati numarul ";cin>>n;
cout<<"Divizorii numarului "<<n<<" sunt: ";

1
for(i=1;i<=n;i++)
if(n%i==0)
cout<<" "<<i;
}

Problema 3:
Sa se verifice daca un numar este numar prim sau nu. Spunem ca un numar n
este numar prim daca are ca divizori numai valorile 1 si n.

#include <iostream.h>
void main(void)
{
int n,i,prim;
cout<<"Dati numarul ";cin>>n;
prim=1;
for(i=2;i<=n/2;i++)
if(n%i==0) prim=0;
if(prim==1)
cout<<"Numarul "<<n<<" este numar PRIM";
else
cout<<"Numarul "<<n<<" NU este numar PRIM";
}

Problema 4:
Sa se verifice daca un numar este numar perfect sau nu. Spunem ca un numar
este numar perfect daca este egal cu suma divizorilor lui, mai putin el insusi. (Exemplu:
numarul 6 este perfect, deoarece este egal cu suma divizorilor sai 1,2,3).
#include <iostream.h>
void main(void)
{
int n,i,s=0;
cout<<"Dati numarul ";cin>>n;

for(i=1;i<=n/2;i++)
if(n%i==0) s+=i;
if(n==s)
cout<<"Numarul "<<n<<" este numar PERFECT";
else
cout<<"Numarul "<<n<<" NU este numar PERFECT";
}

Problema 5:
Se citesc n numere intregi. Sa se determine minimul si maximul lor.

#include <iostream.h>
void main(void)
{
int n,i,max,min,x;
min=32367;
max=-32368;

cout<<"Dati numarul ";cin>>n;


for(i=1;i<=n;i++)
{
cout<<"dati numarul "<<i<<" ";
cin>>x;
if(max<x) max=x;
if(min>x) min=x;
}
cout<<"Ma ximul este "<<max<<endl;
cout<<"Minimul este "<<min;
}

Problema 6:
Sa se calculeze suma cifrelor unui numar intreg.

#include <iostream.h>
void main(void)
{
int n,i,suma=0,r;
cout<<"Dati numarul ";cin>>n;
while(n!=0)
{
r=n%10;
suma+=r;
n=n/10;
}
cout<<"Suma este "<<sum a<<endl;
}
Problema 7:

Sa se verifice daca un numar este palindrom sau nu. Spunem ca un numa este
palindrom daca este egla cu rasturnatul sau (adica numarul format din cifrele de la
dreapta la stanga ale numarului initial – exemplu : n = 25652).

#include <iostream.h>
void main(void)
{
int n,r,m=0,x;
cout<<"Dati numarul ";cin>>n;
x=n;
while(n!=0)
{
r=n%10;
m+=r;
n=n/10;
}
if(x==m)
cout<<"Numarul "<<x<<" este PALINDROM"<<endl;
else
cout<<"Numarul "<<x<<" NU este PALINDROM"<<endl;
}

3
Probleme propuse spre rezolvare

1. Se citeste un numar natural par. Se cere sa se descompuna in suma de cate doua


numere prime (conjectura lui GOLDBACH).
2. Se citesc doua numere naturale formate din cate 4 cifre distincte. Sa se determine
care este numarul cifrelor comune celor doua numere (care nu concid obligatoriu si ca
pozitie).
3. Se considera sirul lui Fibonacci, definit astfel:
1, daca n = 1
fib(n) = 1, daca n = 2
fib(n-1) + fib(n-2), daca n > 2
4. Se da un numar natural n > 0, scris in baza 10. Se cere sa se afiseze reprezentarile
sale in bazele 2, 8 si 16.
5. Se considera un numar natural n. Sa se scrie un program C++ care sa afiseze toate
descompunerile numarului dat in suma de numere consecutive.
Exemplu: Pentru n = 10 1+2+3+4
n = 15 1+2+3+4+5=4+5+6=7+8

S-ar putea să vă placă și