karlangadas

A Different Kind of Sorting

Dec 23rd, 2016
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.11 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. #include <map>
  4. #include <cmath>
  5. using namespace std;
  6. const long long N =1417;
  7. int esPrimo[N];
  8.  
  9. void criba(long long n){
  10.     for (long long i=0;i<=n;i++) esPrimo[i]=1;
  11.  
  12.     esPrimo[0]=esPrimo[1]=0;
  13.  
  14.     for (long long p=2;p<=n;p++){
  15.         if (esPrimo[p])
  16.             for(long long mul=p*p;mul<N;mul+=p) esPrimo[mul]=0;
  17.     }
  18. }
  19. multimap<int,int>m;
  20. int main(){
  21.     criba(1416);
  22.     int num;
  23.     //Ordenar
  24.     m.insert (pair<char,int>(1,1));
  25.     for (int i=2;i<=2000000;i++){
  26.         int n=i,cant=0,cont=2,aux;
  27.         while(n!=1){
  28.             while((cont<=1415) && !(esPrimo[cont]&&((n % cont)==0))) cont++;
  29.             if ((cont==1416)&& (n!=1)){cant++;break;}
  30.             //cout<<"cont: "<<cont<<endl;
  31.             while (((n % cont)==0) && (n!=1)){
  32.                 n=n/cont;cant++;
  33.                 //cout<<n<<endl;
  34.             }
  35.             cont++;
  36.         }
  37.         //cout<<i<<"-> cant: "<<cant<<endl;
  38.            
  39.         m.insert (pair<char,int>(cant,i));
  40.     }
  41.     int k=1;
  42.     map<int,int>mm;
  43.     for (multimap<int,int>::iterator it=m.begin(); it!=m.end(); ++it){
  44.         mm[k]=(*it).second;
  45.         k++;
  46.     }
  47.     int id=0;
  48.     while((cin>>num) && (num!=0)){
  49.         id++;
  50.         cout <<"Case " <<id<<": " << mm[num] << '\n';
  51.     }
  52.     return 0;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment