Parlando con un amico ci siamo accorti che si riesce ad ottenere 100/100 in questo problema anche se il programma non funziona per buona parte dei numeri. In particolare se si assume che che ogni numero pari non sia semiprimo e che ogni numero dispari ( ad eccezione dei numeri primi) sia semiprimo, il programma viene valutato come completamente corretto, anche se ovviamente non funziona con numeri come 34 o 45. Ecco il codice:
#include <iostream>
#include <fstream>
using namespace std;
int N, res=-1;
int main(){
ifstream fin("input.txt");
ofstream fout("output.txt");
cin>>N;
if(N<2 || N%2==0) fout<<res;
else {
for(int i=2; i<=N; i++) {
if(N%i==0){
if(i==N) fout<<res;
else {
fout<<i<<" "<<N/i;
break;
}
}
}
}
}