# PBinfo #570 – Divizori – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

Cerința
Se dă un număr natural nenul n. Să se construiască un șir strict crescător de lungime maximă a[i] cu proprietatea că:


fiecare element al șirului este divizor al lui n
a[i] este divizor al lui a[i+1]

Date de intrare
Programul citește de la tastatură numărul n.

Date de ieșire
Programul va afișa pe ecran elementele șirului construit, separate printr-un spațiu.

Restricții și precizări

1 ≤ n ≤ 1.000.000.000
dacă există mai multe șiruri de lungime maximă care respectă condițiile, se poate afișa oricare

Exemplu:
Intrare

12
Ieșire

1 2 6 12

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int n, b[1005], p[1005], k;
int main() {
    cin >> n;
    int m = n, d = 2;
    while(m>1)
    {
		int pp = 0;
		while(m % d == 0)
			pp ++ , m /= d;
		if(pp)
		{
			k++;
			b[k] = d, p[k] = pp;
		}
		d ++;
		if(m > 1 && d*d > m )
			d = m;
	}
	int x = 1;
	cout << x << " ";
	for(int i =1 ; i <= k ; i++)
		for(int j = 1; j <= p[i] ; j ++)
		{
			x *= b[i];
			cout << x << " ";
		}
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/570)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/570/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-570/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
