分解质因数

xiaoxiao2021-02-28  59

/* *********************************************** ┆ ┏┓   ┏┓ ┆ ┆┏┛┻━━━┛┻┓ ┆ ┆┃       ┃ ┆ ┆┃   ━   ┃ ┆ ┆┃ ┳┛ ┗┳ ┃ ┆ ┆┃       ┃ ┆ ┆┃   ┻   ┃ ┆ ┆┗━┓ 马 ┏━┛ ┆ ┆  ┃ 勒 ┃  ┆       ┆  ┃ 戈 ┗━━━┓ ┆ ┆  ┃ 壁     ┣┓┆ ┆  ┃ 的草泥马  ┏┛┆ ┆  ┗┓┓┏━┳┓┏┛ ┆ ┆   ┃┫┫ ┃┫┫ ┆ ┆   ┗┻┛ ┗┻┛ ┆ ************************************************ */ #include <iostream> #include <set> #include <map> #include <stack> #include <cmath> #include <queue> #include <cstdio> #include <bitset> #include <string> #include <vector> #include <iomanip> #include <cstring> #include <algorithm> #include <functional> #define PI acos(-1) #define eps 1e-8 #define inf 0x3f3f3f3f #define debug(x) cout<<"---"<<x<<"---"<<endl typedef long long ll; using namespace std; const int NP = 100005; int ispri[NP] = {}, prime[NP], pcnt = 0; void getprime() { ispri[0] = ispri[1] = 1; for (long long i = 2; i < NP; i++) if (ispri[i] == 0) { prime[++pcnt] = i; for (long long j = i * i; j < NP; j += i) { ispri[j] = 1; } } } int a[1000000] = {}, icnt = 0; void pdec(int n) { for (int i = 1; prime[i]*prime[i] <= n; i++) if (n % prime[i] == 0) { a[++icnt] = prime[i]; n /= prime[i]; i--; } if (n != 1) { a[++icnt] = n; } } int main() { getprime(); int n; cin >> n; pdec(n); for (int i = 1; i <= icnt; i++) { cout << a[i] << endl; } return 0; } /************************************************ ┆ ┏┓   ┏┓ ┆ ┆┏┛┻━━━┛┻┓ ┆ ┆┃       ┃ ┆ ┆┃   ━   ┃ ┆ ┆┃ ┳┛ ┗┳ ┃ ┆ ┆┃       ┃ ┆ ┆┃   ┻   ┃ ┆ ┆┗━┓   ┏━┛ ┆ ┆  ┃   ┃  ┆       ┆  ┃   ┗━━━┓ ┆ ┆  ┃  AC代马   ┣┓┆ ┆  ┃    ┏┛┆ ┆  ┗┓┓┏━┳┓┏┛ ┆ ┆   ┃┫┫ ┃┫┫ ┆ ┆   ┗┻┛ ┗┻┛ ┆ ************************************************ */
转载请注明原文地址: https://www.6miu.com/read-84283.html

最新回复(0)