Sunteți pe pagina 1din 2

Cercul de informatic

Lecia 12

XII. Algoritmi pentru prelucrarea divizorilor


1. Prezentare general
Pentru prelucrarea divizorilor unui numr n vom proceda n felul urmtor:
generm toate numerele naturale mai mici sau egale cu n (cu ajutorul unei instruciuni for)

o verificm dac n se mparte exact la aceste numere i n caz afirmativ prelucrm


acest numr (deoarece este divizor).

for (d=1; d<=n;d++) //generam numerele de la 1 la n


{
if(n%d==0) //daca n se imparte exact la d
//prelucreaz d
}

2. Probleme rezolvate
2.1. Se citete un numr natural n. S se afieze toii divizorii numrului n.
Exemplu: dac se citete n = 10 se va afia 1 2 5 10.
Rezolvare: generm toate numerele naturale mai mici sau egale cu n i dac n se mparte exact la
numrul generat, acest numr va fi afiat
#include <iostream>
using namespace std;
int n,d;
int main()
{
cout << "n="; cin>>n; //citesc n
for (d=1; d<=n;d++) //generam numerele de la 1 la n
{
if(n%d==0) //daca n se imparte exact la d
cout<<d<< ;//afisam divizorul
}

return 0;
}

2.2. Se citete un numr natural n. S se calculeze i s se afieze ci divizori are numrul n.


Exemplu: pentru n = 20 se afieaz 6.
1

Cercul de informatic

Lecia 12

Explicaie: n acest caz trebuie s numrm divizorii numrului. Vom utiliza o variabil nr care va
reine numrul de divizori. Desigur, numerotarea ncepe de la 0, prin urmare valoare iniial a
variabilei nr va fi 0. Generm toate numerele naturale mai mici sau egale cu n i dac n se mparte
exact la numrul generat valoarea lui nr crete cu 1.
#include <iostream>
using namespace std;
int n,uc, nr;
int main()
{
.; //citesc n
nr = 0;//numararea divizorilor incepe de la 0
..................... //generam numerele de la 1 la n
{
if(................) //daca n se imparte exact la d
nr = nr + 1;//creste numarul de divizori
}

cout<<nr; //afisez numarul de divizori


return 0;
}

2.3. Se citete un numr natural n. S se calculeze i s se afieze suma divizorilor lui n.


Exemplu: pentru n = 20 se afieaz 42.
Explicaie: n acest caz trebuie s calculm suma divizorilor numrului. Vom utiliza o variabil s
care va reine suma. Valoare iniial a variabilei s va fi 0. Generm toate numerele naturale mai mici
sau egale cu n i dac n se mparte exact la numrul generat valoarea acesta va fi adunat la sum.
//biblioteci, declaratii
int main()
{
.; //citesc n
..;//valoarea initiala a sumei
..................... //generam numerele de la 1 la n
{
if(................) //daca n se imparte exact la d
s = .............;//adun divizorul la suma
}

; //afisez suma
return 0;
}
2

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