Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- void solve();
- vector<int> primeSieve(int *p , int n) {
- // p[0] = p[1] = 0;
- for (int i = 3; i <= n; i += 2)
- {
- p[i] = 1; // marling all odd numbers prime
- }
- for (int i = 3; i <= n; i += 2)
- {
- if (p[i]) {
- //optimisation of taking 2*i jumps
- for (int j = i * i; j <= n; j += 2 * i)
- {
- p[j] = 0;
- }
- }
- }
- vector<int> primes;
- primes.push_back(2);
- for (int i = 3; i <= n; i += 2)
- {
- if (p[i])
- primes.push_back(i);
- }
- return primes;
- }
- void factorize(int m, vector<int> &primes) {
- vector<int> factors;
- factors.clear();
- int p;
- for (int i = 0; p * p <= m; ++i)
- {
- p = primes[i];
- if (m % p == 0) {
- while (m % p == 0) {
- factors.push_back(p);
- m /= p;
- }
- }
- }
- if (m != 1) {
- factors.push_back(m);
- }
- for (auto i : factors) {
- cout << i << " ";
- }
- }
- int main()
- {
- ios_base::sync_with_stdio(false); cin.tie(NULL);
- #ifndef ONLINE_JUDGE
- freopen("input.txt", "r", stdin);
- freopen("error.txt", "w", stderr);
- freopen("output.txt", "w", stdout);
- #endif
- int t = 1;
- /*is Single Test case?*/cin >> t;
- while (t--)
- {
- solve();
- cout << "\n";
- }
- cerr << "time taken : " << (float)clock() / CLOCKS_PER_SEC << " secs" << endl;
- return 0;
- }
- void solve()
- {
- int p[1000000] = {};
- int n; cin >> n;
- vector<int> primes = primeSieve(p, 100);
- factorize(n, primes);
- }
Advertisement
Add Comment
Please, Sign In to add comment