Advertisement
Mirbek

Prime Factorization

Jan 3rd, 2022
1,098
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.12 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. const int N = 1e6 + 7;
  6.  
  7. int pr[N];
  8.  
  9. vector <int> primeFactorization(int x) {
  10.     vector <int> v;
  11.     for (int i = 2; i <= x; i++) {
  12.         while (x % i == 0) {
  13.             v.push_back(i);
  14.             x /= i;
  15.         }
  16.     }
  17.     return v;
  18. }
  19. vector <int> primeFactorization2(int x) {
  20.     vector <int> v;
  21.     for (int i = 2; i * i <= x; i++) {
  22.         while (x % i == 0) {
  23.             v.push_back(i);
  24.             x /= i;
  25.         }
  26.     }
  27.     if (x > 1) {
  28.         v.push_back(x);
  29.     }
  30.     return v;
  31. }
  32. vector <int> primeFactorization3(int x) {
  33.     vector <int> v;
  34.     while (x > 1) {
  35.         int p = pr[x];
  36.         v.push_back(p);
  37.         x = x / p;
  38.     }
  39.     return v;
  40. }
  41.  
  42. int main(){
  43.     for (int i = 2; i < N; i++) {
  44.         if (pr[i] == 0) {
  45.             pr[i] = i;
  46.             for (int j = i + i; j < N; j = j + i) {
  47.                 if (pr[j] == 0)
  48.                     pr[j] = i;
  49.             }
  50.         }
  51.     }
  52.  
  53.     int x;
  54.     cin >> x;
  55.  
  56.     vector <int> v = primeFactorization3(x);
  57.  
  58.     for (int x : v) {
  59.         cout << x << " ";
  60.     }
  61. }
  62.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement