Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- using namespace std;
- int prim[32000],p[3500],exp[3500];
- bool ok;
- void Ciur(int K) /// numerele prime pana la 32000 si exponentii lor in k!
- {
- prim[2]=0;
- int j,k=0,produs;
- for(int i=2;i<=32000;++i)
- if(prim[i]==0)
- {
- ++k;
- p[k]=i;
- exp[k]=0;
- produs=i;
- while(produs<=K)
- exp[k]+=K/produs,produs=produs*i;
- j=i+i;
- while(j<=32000)
- prim[j]=1,j+=i;
- }
- }
- int main()
- {
- ifstream f("primxxl.in");
- int n,k;
- f>>n>>k;
- Ciur(k);
- int x,nr=0,j,exp_x;
- while(n--)
- {
- f>>x;
- if(x<=k)
- ++nr;
- else
- {
- j=1;
- ok=true;
- while((p[j]*p[j]<=x)&&ok)
- {
- exp_x=0;
- while(x%p[j]==0)
- ++exp_x,x=x/p[j];
- if(exp_x>exp[j])
- ok=false;
- ++j;
- }
- if(x>k)
- ok=false;
- if(ok)
- ++nr;
- }
- }
- f.close();
- ofstream g("primxxl.out");
- g<<nr;
- g.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement