1 整数的唯一分解定理(如果A本身就是素数的话,那么本身就是分解式)
任意正整数都有且只有一种方式写出其素因子的乘积表达式。
A = (p1^k1)*(p2^k2)*(p3^k3)*....*(pn^kn) 其中pi均为素数;
A^B = p1^(k1*B) * p2^(k2*B)*...* pn^(kn*B);
#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
#define MAXN 1010
int n;
int p[MAXN] , k[MAXN];
void solve(){
int pos = 0;
/*分解整数*/
for(int i = 2 ; i*i <= n ; i++){
if(n%i == 0){
p[pos] = i;
k[pos] = 0;
while(!(n%i)){
k[pos]++;
n /= i;
}
pos++;
}
}
/*特殊判断,如果n本身是素数的话那么上面的for循环是不执行的*/
if(n != 1){
p[pos] = n;
k[pos++] = 1;
}
}
int main(){
scanf("%d" , &n);
solve();
return 0;
}