Aplicatii rezolvate

1. Se citeşte de la tastatură un număr natural n. Se cere să se calculeze suma divizorilor săi.

Exemplu: dacă n=8 divizorii săi sunt {1, 2, 4, 8} deci va trebui să afişăm valoarea 15= 1+2+4+8

Algoritmul în pseudocod este:

citeşte n //număr natural

s=0 // iniţializez suma divizorilor lui n cu zero

pentru d=1,n,+1 // caut posibilii divizori a lui n în intervalul [1,n]

│ ┌dacă n%d = 0 atunci //dacă d este divizor a lui n atunci

│ │ s=s+d //il adaug la suma

│ └■

└■

scriesuma divizorilor lui ”,n,” este ”,s

#include<iostream>

using namespace std;

int n,s;

int main()

{

cout<<"n="; cin>>n;

for(int d=1;d<=n;d++)

if(n%d==0)

s=s+d;

cout<<"Suma divizorilor lui"<<n<<" este "<<s;

return 0;

}

2. Se citeşte de la tastatură un număr natural n. Se cere să se calculeze numărul divizorilor săi.

Exemplu: dacă n=8 divizorii săi sunt {1, 2, 4, 8} deci va trebui să afişăm valoarea 4

Algoritmul în pseudocod este:

citeşte n //număr natural

nr=0 // iniţializez numărul divizorilor lui n cu zero

pentru d=1,n,+1 // caut posibilii divizori a lui n în intervalul [1,n]

│ ┌dacă n%d = 0 atunci //dacă d este divizor a lui n atunci

│ │ nr=nr+1 //număr ca am gasit un divizor

│ └■

└■

scrienumărul divizorilor lui ”,n,” este ”,nr

#include<iostream>

using namespace std;

int n,nr;

int main()

{

cout<<"n="; cin>>n;

for(int d=1;d<=n;d++)

if(n%d==0)

nr++;

cout<<"Numarul divizorilor lui"<<n;

cout<<" este "<<nr;

return 0;

}

3. Se citeşte de la tastatură un număr natural n. Se cere să se afişeze pe ecran numerele prime mai mici sau egale cu n.

Exemplu: dacă n = 20 atunci trebuie afişate valorile 2 3 5 7 11 13 17 19

Algoritmul în pseudocod este:

citeşte n //număr natural

dacă n<=1 atunci

scrieNu exista numere prime mai mici sau egale cu 1

altfel

scrieNumerele prime mai mici sau egale cu ”, n,” sunt:

│ ┌pentru x=2,n,+1 // consider fiecare numar x din intervalul [2,n]

│ │ // verific daca numarul x este prim

│ │ ok=1, d=2

│ │ ┌cât timp d<=radical din x şi ok = 1 execută

│ │ │ ┌dacă x%d=0 atunci

│ │ │ │ ok=0 // atunci x nu este prim

│ │ │ │altfel

│ │ │ │ d=d+1

│ │ │ └■

│ │ └■

│ │ ┌dacă ok = 1 atunci // dacă x este prim atunci îl afişez

│ │ │ scrie x, ” ”

│ │ └■

│ └■

└■

#include<iostream>

#include<cmath>

using namespace std;

int n,s;

int main()

{ cout<<"n="; cin>>n;

if (n<=1)

cout<<"Nu exista numere prime mai mici sau egale cu 1!";

else

{cout<<"Numere prime mai mici sau egale cu "<<n<<" sunt :"<<endl;

for(int x=2;x<=n;x++)

{ int d=2,ok=1;

while (d<=sqrt(x) && ok)

if (x%d==0)

ok=0;

else

d++;

if(ok)

cout<<x<<" ";

}

}

return 0;

}

4. Se dă un număr natural n. Se cere să se determine factorul la puterea cea mai mare care apare în descompunerea în factroi primi a numărului dat.

Exemplu: dacă n=24200, atunci descompunerea în factrori primi a lui este 24200=23*52*112, se observă că factorul 2 apare la cea mai mare putere în descompunere, deci pe ecran trebuie afişată valoarea 2.

Algoritmul în pseudocod este:

citeşte n // număr natural

f_max=0 // factorul maxim initial este 0

p_max=0 // puterea acestui factor este initial tot 0

d=2 // primul posibil factor din descompunere este 2

cât timp n>=1 execută

│ s=0 //număr de câte ori factorul d îl divide pe n

│ ┌cât timp n%d=0 execută

│ │ s=s+1

│ │ n=n/d

│ └■

│ ┌dacă s ≠ 0 atunci//daca d a fost factor vad daca are cea mai mare putere

│ │ ┌dacă s > p_max atunci

│ │ │ p_max=s; //actualizez puterea maxima

│ │ │ f_max=d; //pastrez factorul la putrea maxima

│ │ └■

│ └■

│ d=d+1

└■

scrie “Factorul care apare la puterea maxima in descompunerea in foactori

primi este ”, f_max

#include<iostream.h>

using namespace std;

int n,s,d,p_max,f_max;

int main()

{ cout<<"n="; cin>>n;

d=2;

while(n>1)

{ s=0;

while(n%d==0)

{s++;

n=n/d;

}

if(s>p_max)

{ p_max=s;

f_max=d;

}

d++;

}

cout<<"factorul la puterea maxima este ”;

cout<<f_max;

return 0;

}

5. Se citesc de la tastatură n numere naturale. Se cere să se determine cel mai mare divizor comun dintre cele n numere.

Exemplu: dacă n=4 şi numerele citite sunt 12, 48, 96 şi 192 atunci cel mai mare divizor comun al lor este 12.

Pentru a determina acest lucru vom proceda astfel:

· Citim iniţial n ca să stim câte numere vom prelucra

· Citim primele două numere

· Determinam cmmdc dintre primele doua numere citite

· Pentru celelalte n-2 numelre procedăm astfel

o Citim un număr

o Determinăm cmmdc dintre numarul citit si cmmdc determinat anterior

Algoritmul în pseudocod este:

citeşte n // număr natural care precizează câte numere vom prelucra

//citeşte primele două numere şi determină cmmdc dintre ele

citeste a,b

cât timp a ≠ b execută //dacă numerele sunt diferite atunci până când ajung

│ //egale din cel mai mare numar il scad pe cel mai mic

│ ┌dacă a > b atunci

│ │ a = a-b

│ │altfel

│ │ b = b-a

│ └■

└■

┌pentru i=3,n,+1

citeste b //citeste următorul număr

│ ┌cât timp a ≠ b execută

│ │ ┌dacă a > b atunci

│ │ │ a = a-b

│ │ │altfel

│ │ │ b = b-a

│ │ └■

│ └■

└■

scriecmmdc-ul numerelor citite este ”, a

#include<iostream>

using namespace std;

int n,a,b;

int main()

{ cout<<"n="; cin>>n;

cout<<"dati un numar:"; cin>>a;

cout<<"dati un numar:"; cin>>b;

while(a!=b)

if(a>b)

a=a-b;

else

b=b-a;

for(int i=3;i<=n;i++)

{ cout<<"dati un numar:"; cin>>b;

while(a!=b)

if(a>b)

a=a-b;

else

b=b-a;

}

cout<<"cmmdc dintre numerele date este ",a;

return 0;

}