Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.16 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define ll long long
  3. #define ull unsigned long long
  4. #define FOR(i, a, b) for (int i = (a); i <= (b); i++)
  5. #define F0R(i, a) for (int i = 0; i < (a); i++)
  6. #define FORd(i,a,b) for (int i = (b)-1; i >= (a); i--)
  7. #define F0Rd(i,a) for (int i = (a)-1; i >= 0; i--)
  8. #define trav(a, x) for (auto& a : x)
  9. #define mp make_pair
  10. #define IOS ios_base::sync_with_stdio(0); cin.tie(0);
  11. #define pb push_back
  12. #define f first
  13. #define s second
  14. #define lb lower_bound
  15. #define ub upper_bound
  16. #define sz(x) (int)x.size()
  17. #define beg(x) x.begin()
  18. #define en(x) x.end()
  19. #define all(x) beg(x), en(x)
  20. #define resz resize
  21. using namespace std;
  22. const int mod = 10000007;
  23.  
  24.  
  25. int t,x, y, z, m, l, f;
  26. vector<int> vec[101];
  27. bool prime[101];
  28. void prim(int n)
  29. {
  30.      memset(prime, true, sizeof(prime));
  31.  
  32.     for (int p=2; p*p<=n; p++)
  33.     {
  34.         // If prime[p] is true then p is a prime
  35.         if (prime[p] == true)
  36.         {  
  37.             for (int i=p*p; i<=n; i += p)
  38.                 prime[i] = false;
  39.         }
  40.     }
  41.    
  42. }
  43. void divisors(int n){
  44.     int d = n;
  45.     while(n%2==0){
  46.         vec[d].pb(2);
  47.         n /= 2;
  48.     }
  49.     for(int i = 3; i <= sqrt(n); i+=2){
  50.         while(n%i == 0){
  51.             vec[d].pb(i);
  52.             n /= i;
  53.         }
  54.     }
  55.     if(n > 1) vec[d].pb(n);
  56. }
  57.  
  58.  
  59. void solve(){
  60.    
  61.     //vector <int> v;
  62.    
  63.     vec[2].pb(2);
  64.  
  65.     FOR(i,3,101){
  66.         for(int j = 0; j < vec[i-1].size(); j++){
  67.             int au = vec[i-1][j];
  68.             vec[i].pb(au);
  69.         }
  70.         if(prime[i])vec[i].pb(i);
  71.         else{
  72.             divisors(i);
  73.         }
  74.     }
  75. }
  76.  
  77.  
  78.  
  79. int main()
  80. {
  81.     solve();
  82.     prim(101);
  83.     vector<int> ve;
  84.     for(int i = 2; i < 101; i++){
  85.         if(prime[i]) ve.pb(i);
  86.     }
  87.     while(1){
  88.         int in;
  89.         cin >> in;
  90.         if(in == 0) break;
  91.         multiset<int> s;
  92.         for(int i = 0; i < vec[in].size(); i++){
  93.             int xs = vec[in][i];
  94.             s.insert(xs);
  95.         }
  96.         int cnt = 0;
  97.         printf("%3d", in);
  98.         cout << "! =";
  99.         for(int i = 0; i < ve.size(); i++){
  100.             int pu = s.count(ve[i]);
  101.             if(pu > 0){
  102.                 printf("%3d", pu);
  103.                 cnt++;
  104.                 if(cnt == 15) cout << endl << "      ";
  105.             }
  106.         }
  107.         cout << endl;
  108.     }
  109.     return 0;
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement