Documente Academic
Documente Profesional
Documente Cultură
1. a) Se dau dou numere naturale, nenule. S sescrie o funcie care calculeaza cel
mai mare divizor comun al lor i cel mai mic multiplu comun.
b) Considernd cele dou numere ca fiind numrtorul i numitorul unei fracii, s
se simplifice fracia astfel nct s se aduc la o form ireductibil.
Exemplu: date de intrare 12 32
date de ieire cmmdc=4 cmmmc=96
fractia simplificata este 3/8
Procedeu:
a) Se imparte numrul mai mare la numrul mai mic i, att timp ct restul este
diferit de 0, dempritul este nlocuit de mpritor, iar mpritorul este nlocuit de
rest. Ultimul rest diferit de 0, n aceast succesiune de mpriri reprezint cel mai
mare divisor comun. Cel mai mic multiplu comun se calculeaz dup relaia :
produsul numerelor este egal cu produsul ntre cel mai mare divisor comun i cel mai
mic multiplu comun.
b) Pentru simplificare, se ambele numere impart numerele la cmmdc i se rein
rezultatele.
#include <iostream.h>
#include <conio.h>
int cmmdc(int a,int b){
int r,aux;
if (a<b){
aux=a;a=b;b=aux;}
r=a%b;
while (r>0){
a=b;b=r;r=a%b;}
return b;
}
void main(){
int m,n;
cout << "m="; cin >>m;
cout << "n="; cin >>n;
cout<<"cel mai mare divizor comun intre "<<m<<" si "<<n<<" este"<<
cmmdc(m,n) <<endl;
cout<<"cel mai mic multiplu comun intre "<<m<<" si "<<n<<" este"<<
m*n / cmmdc(m,n) << endl;
cout<<"fractia simplificata este "<< m/cmmdc(m,n)<<"/"<< n/cmmdc(m,n) <<
endl;
getch();}
#include <iostream.h>
#include <conio.h>
int cmmdc(int a,int b){
int r,aux;
if (a<b){
aux=a;a=b;b=aux;}
r=a%b;
while (r>0){
a=b;b=r;r=a%b;}
return b;
}
void main(){
int b1,f1,nrb,nrf;
cout << " Numarul de barbati:"; cin >>b1;
cout << "Numarul de femei:"; cin >>f1;
if (cmmdc(b1,f1)!=1){cout<<"Numarul maxim de echipe este:"<<
cmmdc(b1,f1);
nrb=b1/cmmdc(b1,f1);
nrf=f1/cmmdc(b1,f1);
cout<<",fiecare1 echipa avand "<<nrb<<" barbati si "<<nrf<<"
femei"<<endl;}
else
cout<<"Imposibil";
getch();
}
n=10 date de ieire 10 nu este prim. numere prime mai mici decat 10 sunt 2 3 5
7; divizorii primi ai lui 10 sunt 2 5
Rezolvare: Se definete o variabil p, care ia valoarea 1, dac numrul este prim i 0,
dac nu este prim. Iniial, se consider c numrul este prim i se iniializeaz p cu 1. Se
parcurg apoi numerele pn la jumtatea lui n (divizorii posibili ai lui n i, dac unul din
numerele parcurse l divide pe n, p devine 0.
#include <iostream.h>
#include <conio.h>
int prim(int a){
int p=1,i;
for (i=2;i<=a/2;i++)
if (a%i==0) p=0;
return p;};
void main(){
int n,k;
cout<<"n="; cin>>n;
/*rezolvare punctul a */
if (prim(n)==1) cout<<n<<" este prim"<<endl;
else cout<<n<<" nu este prim"<<endl;
cout<<"Numerele prime mai mici decat "<<n<<" sunt: ";
/*rezolvare punctul b */
for (k=2;k<n;k++) if (prim(k)==1) cout<<k<<" ";
cout<<endl;
/*rezolvare punctul c */
if (prim(n)) cout<<n<<" nu are divizori"<<endl;
else {
cout<<"divizorii primi ai lui "<<n<<" sunt: ";
for (k=2;k<n;k++) if (
n%k==0) if (prim(k)==1) cout<<k<<" ";}
getch();
}
return p;};
void main(){
int m,n,k,exp;
cout<<"n="; cin>>n;m=n;
for (k=2;k<=sqrt(m);k++){
if (prim(k)){ exp=0;
while ((n%k)==0)
{n=n/k; exp++;};
if (exp>0)
cout<<k<<" la puterea "<<exp<<endl;}}
getch();}