Advertisement
sajid161

Class - 28 : Task - 2

Jan 26th, 2025
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.31 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long int ll;
  4. const int mx=1e6+123;
  5. bitset<mx> is_prime;
  6. vector<ll>primes;
  7. set<ll>st;
  8. void prime_gen(ll n)
  9. {
  10.     is_prime[2]=1;
  11.     for(ll i=3;i<=n;i+=2) is_prime[i]=1;
  12.     for(ll i=3;i*i<=n;i+=2)
  13.     {
  14.         if(is_prime[i]==1)
  15.         {
  16.             for(ll j=i*i;j<=n;j+=2*i)
  17.             {
  18.                 is_prime[j]=0;
  19.             }
  20.         }
  21.     }
  22.     primes.push_back(2);
  23.     for(int i=3;i<=n;i+=2)
  24.     {
  25.         if(is_prime[i]==1) primes.push_back(i);
  26.     }
  27. }
  28. vector<ll> find_prime_fact(ll n)
  29. {
  30.     vector<ll>v;
  31.     for(auto prime:primes)
  32.     {
  33.         if(1ll * prime*prime>n) break;
  34.         if(n%prime==0)
  35.         {
  36.             v.push_back(prime);
  37.             while(n%prime==0)
  38.             {
  39.                 n/=prime;
  40.             }
  41.         }
  42.     }
  43.     if(n>1) v.push_back(n);
  44.     return v;
  45. }
  46. int main()
  47. {
  48.     prime_gen(1e6);
  49.     ll t;
  50.     cin>>t;
  51.     for(ll i=1;i<=t;i++)
  52.     {
  53.  
  54.         ll n;
  55.         cin>>n;
  56.         set<ll>st;
  57.         while(n--)
  58.         {
  59.             vector<ll>v;
  60.             ll a;
  61.             cin>>a;
  62.             v=find_prime_fact(a);
  63.             for(auto u:v) st.insert(u);
  64.  
  65.         }
  66.         cout<<"Case #"<<i<<": "<< st.size()<<endl;
  67.         for(auto u:st ) cout<<u<<endl;
  68.     }
  69. }
  70.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement