Maruf_Hasan

prime factors.cpp

Oct 25th, 2018
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.66 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. /*
  6.  
  7. Bismillahir Rahmanir Rahim
  8. Problem :
  9. Problem Link :
  10. Topics :
  11. Solver : Masud Parves
  12. I Love Code More than Sharks Love Blood <3
  13. */
  14.  
  15.  
  16. #define ff first
  17. #define ss second
  18. #define pb push_back
  19. #define mp make_pair
  20. #define all(a) a.begin(), a.end()
  21.  
  22.  
  23. #define sf(a) scanf("%d",&a)
  24. #define sff(a,b) scanf("d",&a,&b)
  25. #define sfff(a,b,c) scanf("d%d",&a,&b,&c)
  26.  
  27. #define f0(i,b) for(int i=0;i<(b);i++)
  28. #define f1(i,b) for(int i=1;i<=(b);i++)
  29. #define f2(i,a,b) for(int i=(a);i<=(b);i++)
  30. #define fr(i,b,a) for(int i=(b);i>=(a);i--)
  31.  
  32. #define mx 50000
  33. #define TEST_CASE(t) for(int z=1 ; z<=t ; z++)
  34. #define PRINT_CASE printf("Case %d: ",z)
  35. #define NOT_VISITED 0
  36. #define IS_VISITED 1
  37.  
  38.  
  39.  
  40. int fx[4]= {1,-1,0,0};
  41. int fy[4]= {0,0,1,-1};
  42.  
  43.  
  44. const double PI = acos(-1.0);
  45. const double EPS = 1e-6;
  46. const int MOD = (int)1e9+7;
  47. const int maxn = (int)2e5+5;
  48.  
  49. typedef long long ll;
  50. typedef unsigned long long ull;
  51. typedef vector<int> vi;
  52. typedef pair<int, int> pii;
  53. typedef pair<ll, int> plli;
  54. typedef pair<int, ll> pill;
  55.  
  56. vi prime;
  57. bool flag[mx];
  58.  
  59. void sieve_method()
  60. {
  61. //prime.push_back(0);
  62. prime.push_back(2);
  63.  
  64. for(ll i=3 ; i*i<=mx ; i+=2)
  65. {
  66. if(flag[i]==false)/// hare i is prime
  67. {
  68. prime.push_back(i);
  69. for(ll j = i*i; j <= mx; j +=(i+i))
  70. {
  71. flag[j] = true;
  72. }
  73. }
  74. }
  75. // cout<<prime.size()<<endl;
  76. // for(int i=0; i<prime.size() ; i++)
  77. // {
  78. // cout<<prime[i] << " ";
  79. // }
  80. }
  81.  
  82. vector<int> prime_factors(int n)
  83. {
  84. vector<int> factors;
  85. int pf_index = 0;
  86. //long pf = prime[pf_index];
  87.  
  88. for(int i=0;prime[i] * prime[i] <= n ; i++)
  89. {
  90. if(n % prime[i] == 0)
  91. {
  92. while(n % prime[i] == 0)
  93. {
  94. n /= prime[i];
  95. factors.push_back(prime[i]);
  96. }
  97. }
  98. if(n>1)
  99. factors.push_back(n);
  100.  
  101. }
  102.  
  103. return factors;
  104. }
  105.  
  106.  
  107.  
  108.  
  109. int main()
  110. {
  111.  
  112. //CIN
  113. //freopen("input.txt", "r", stdin);
  114. //freopen("output.txt", "w", stdout);
  115. sieve_method();
  116.  
  117. int n;
  118. while(scanf("%d", &n)!=EOF)
  119. {
  120.  
  121. if(n == 0)
  122. break;
  123.  
  124. vector<int> factors = prime_factors(fabs(n));
  125.  
  126. if(n<0)
  127. printf("%d = -1 x %d", n, factors[0]);
  128. else
  129. printf("%d = %d", n, factors[0]);
  130. for(int i=1 ; i<factors.size() ; i++)
  131. printf(" x %d", factors[i]);
  132. printf("\n");
  133. factors.clear();
  134. }
  135. return 0;
  136. }
Advertisement
Add Comment
Please, Sign In to add comment