Pabon_SEC

Factoring Large Numbers

Apr 6th, 2016
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.16 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define mx 1000005
  3.  
  4. using namespace std;
  5.  
  6. vector<long long>prime;
  7.  
  8. bool check[mx];
  9.  
  10. void sieve()
  11. {
  12.     long long sz,i,j;
  13.  
  14.     prime.push_back(2);
  15.  
  16.     for(i=3; i<mx; i+=2)
  17.     {
  18.         if(check[i]==false)
  19.         {
  20.             check[i] = true;
  21.  
  22.             prime.push_back(i);
  23.  
  24.             for(j=i*i; j<mx; j+=i+i)
  25.             {
  26.                 check[j] = true;
  27.             }
  28.         }
  29.     }
  30. }
  31.  
  32. int main()
  33. {
  34.  
  35.     sieve();
  36.  
  37.     long long n,i,j,len;
  38.  
  39.     while(scanf("%lld",&n)==1)
  40.     {
  41.         if(n<0)
  42.             break;
  43.  
  44.         bool tag = false;
  45.  
  46.         if(n!=1)
  47.         {
  48.             len = prime.size();
  49.  
  50.             for(i=0; i<len; i++)
  51.             {
  52.                 if(n%prime[i]==0)
  53.                 {
  54.                     while(n%prime[i]==0)
  55.                     {
  56.                         tag = true;
  57.  
  58.                         n/=prime[i];
  59.  
  60.                         printf("    %lld\n",prime[i]);
  61.                     }
  62.                 }
  63.             }
  64.         }
  65.  
  66.         if(n!=1)
  67.         {
  68.             printf("    %lld\n",n);
  69.         }
  70.  
  71.         printf("\n");
  72.     }
  73.  
  74.     return 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment