Salut!. Ti-am scris o sursa in C++ dar n-ai specificat ce se intampla in cazul in care ai de ales intre doi factori primi cu aceeasi putere cea mai mare. Am considerat ca trebuie afisat cel mai mare dintre factorii primi. Succes!
#include <iostream>
using namespace std;
int n, d, fm, maxx, fp;
int main()
{
cin >> n;
d = 2;
do
{
fm = 0;
while(n % d == 0)
{
fm ++;
n = n / d;
}
if(fm > 0 && fm >= maxx) maxx = fm, fp = d;
d ++;
if(n > 1 && d * d > n && maxx == 1) fp = n, n = 1;
} while(n>1);
cout << fp;
return 0;
}