Sunteți pe pagina 1din 5

ALGORITMI

DE
DIVIZIBILIT
ATE
Se dă un tablou cu numere naturale, nenule.

Să se insereze după fiecare element neprim


divizorii săi proprii.
#include <iostream>
using namespace std;
int main()
{
unsigned int v[1001], i, div, j, aux, n;
cin >> n;
for (i = 1; i <= n; i++)
cin >> v[i]; //citim elementele tabloului
for (i = 1; i <= n; i++)
{
aux = v[i]; //cream o copie a fiecarui element
for (div = 2; div <= aux / 2; div++)
if (aux % div == 0) //verificam daca elementul are divizori proprii
{
for (j = n; j >= i + 1; j--)
v[j + 1] = v[j]; //mutam elementele spre dreapta
n++;
v[i + 1] = div; //punem valoarea divizorului in tablou
i++; //marim numarul elementului
}
}
for (i = 1; i <= n; i++)
cout << v[i] << ' '; //afisam noul tablou
return 0;
}
Scrieți un program care citește numerele
naturale x și n, apoi n valori întregi și determină
câte perechi de valori consecutive (aflate pe
poziții alăturate în șirul de valori) au cel mai
mare divizor comun egal cu x.
#include <iostream>
using namespace std;
int main()
{
int v[1001], i, copie1, copie2, x, n, rest;
cin >> n >> x;
for (i = 1; i <= n; i++)
cin >> v[i];
for (i = 1; i <= n; i++)
{
copie1 = v[i]; //cream copii ale elementelor pentru care aplicam algoritmul
copie2 = v[i + 1];
while (copie1 % copie2)
{
rest = copie1 % copie2;
copie1 = copie2;
copie2 = rest;
}
if (rest == x) //verfificam daca cel mai mare divizor comun e egal cu x
cout << v[i] << ' ' << v[i + 1] << ';' << ' '; //afisam perechile
}
return 0;
}

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