Orice numar care nu este patrat perfect ( liber de patrate ) are numar par de divizori. Demonstratia cu cod in C++ o ai aici. Succes!
#include <iostream>
using namespace std;
int n, d, nr;
int main()
{
cin >> n;
for(d=1; d*d<n; d++)
if(n % d == 0) nr++;
nr=nr*2;
if(d * d == n) nr++;
cout << nr << "\n";
if(nr % 2 == 1) cout << "patrat perfect";
else cout << "liber de patrate";
return 0;
}