Advertisement
Guest User

Untitled

a guest
Aug 20th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.26 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. bitset<10000000>isPrime;
  5. vector<long long>primes;
  6. void sieveGen(long long N) {
  7.     isPrime.set();
  8.     isPrime[0] = isPrime[1] = 0;
  9.     for(long long i = 2; i <= N; i++) {     //Note, N isn't square rooted!
  10.         if(isPrime[i]) {
  11.             for(long long j = i*i; j <= N; j+= i)
  12.                 isPrime[j] = 0;
  13.             primes.push_back(i);
  14. }}}
  15.  
  16. vector<pair<ll, ll> > primeFactor(ll n) {
  17.     vector<pair<ll, ll> >factor;
  18.     for(long long i = 0; i < (int)primes.size() && primes[i] <= n; i++) {
  19.         bool first = 1;
  20.         while(n%primes[i] == 0) {
  21.             if(first) {
  22.                 factor.push_back({primes[i], 0});
  23.                 first = 0;
  24.             }
  25.             factor.back().second++;
  26.             n/=primes[i];
  27.     }}
  28.     return factor;
  29. }
  30. int main()
  31. {
  32.     sieveGen(1000000);
  33.     ll n;
  34.     cin>>n;
  35.     //ll l,r;
  36.     //cin>>l>>r;
  37.     //for(int i=l; i<=r; i++){
  38.     //ll n=i;
  39.     vector<pair<ll,ll> >factor=primeFactor(n);
  40.     int yes=0;
  41.     for(int i=0; i<factor.size(); i++)
  42.     {
  43.         if(n%(factor[i].first*factor[i].first)==0)
  44.         {
  45.             yes=1;
  46.             break;
  47.         }
  48.     }
  49.     if(yes)cout<<"True, "<<n<<" is a lab number\n";
  50.     //}
  51.     else cout<<"False, "<<n<<" is not a lab number\n";
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement