Răspuns :
tu ai foarte multe greseli in programul tau (verificarea de primalitate, algoritmul de rasturnare) etc. asa ca ti-am refacut programul complet
te sfatuiesc pe viitor sa iti structurezi programul in mici functii, sa-ti imparti efortul, astfel incat sa poti intelegi mai usor ce faci
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("operatii_numere.in");
int v[10001], n;
int prim(int x) {
if (x <= 1)
return 0;
for (int d = 2; d <= x / 2; d++)
if (x % d == 0)
return 0;
return 1;
}
int invers(int x) {
int rev = 0;
while (x != 0) {
rev = rev * 10 + x % 10;
x /= 10;
}
return rev;
}
void dpfp(int x) {
int d = 2, p;
while (x > 1) {
p = 0;
while (x % d == 0) {
x /= d;
p++;
}
if (p != 0)
cout << d << " la puterea " << p << endl;
d++;
}
}
int main() {
f >> n;
for (int i = 1; i <= n; i++) {
f >> v[i];
if (prim(v[i]) == 1 || v[i] == 1)
cout << invers(v[i]) << endl;
else {
cout << endl << "numarul nu e prim, deci se va descompune in urmatorul produs:" << endl;
dpfp(v[i]);
cout << endl;
}
}
f.close();
return 0;
}