Răspuns :
#include <iostream>
#include <fstream>
#include <cmath>
#define MAX 1000000
using namespace std;
void prim(int N,int w[78500]){
//Implementare eficienta pentru salvarea numerelor prime pana la val n in w
//Nu am sa scriu aici rezolvarea acesteia pentru a ii lasa pe cei care mai doresc sa lucreze la problema sa se gandeasca la ea
//Cine doreste sa stie si aceasta parte imi poate trimite msj si ii voi lasa tot codul sursa
}
int main()
{
ifstream fin("paisprezece.in");
ofstream fout("paisprezece.out");
int n,m,nr=0,v[20]={2,3,5,7,11,13,17,19},save,w[78500],start = 1;
w[0]=2;
prim(MAX,w);
fin>>n>>m;
if(pow(2,13)>=n && pow(2,13)<=m) nr++;
if(pow(3,13)>=n && pow(3,13)<=m) nr++;
for(int i=0;i<=7;i++){
save = pow(v[i],6);
if(save>m)
i = 8;
else {
for(int j=start;j<=78497;j++){
if (w[j]*save > m) break;
else if(w[j]*save >=n && i!=j) nr++;
}
start = 0;
}
}
fout << nr;
fin.close();
fout.close();
return 0;
}
Asta este rezolvarea mea pentru a lua 100 puncte pe campion. Tot ce mai trebuie sa faci este sa creezi prim(n,w) care sa iti salveze in vectorul w primele n numere prime!
Sper ca te-am ajutat. Succes!