👤

CerinţaSubprogramul minDivPrim are un singur parametru, n, prin care primeşte un număr
natural. Subprogramul returnează cel mai mic număr natural care are aceiași divizori primi ca n.Scrieţi definiţia completă a subprogramului.Restricţii şi precizărinumele subprogramului va fi minDivPrim1<n<1.000.000.000
ExempluDacă n=75, subprogramul returnează numărul 15, iar dacă n=7, subprogramul
returnează numărul 7.ImportantSoluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.


Răspuns :

int minDivPrim(int n) { int mindp=1; if(n%2==0) { while(n%2==0) n=n/2; mindp*=2; } int d=3; while(n>1) { if(n%d==0) { while(n%d==0) n=n/d; mindp*=d; } else d+=2; if(n>1&&d*d>n) { mindp*=n; break; } } return mindp ; }