#include<stdio.h> #include<math.h> #include<string.h> #include<map> using namespace std;
int main() { int n; map<int,int> factor;
while(true) { scanf("%d",&n); int i; for(i=2;i*i<=n;i++) while(n%i==0) { factor[i]++;n/=i; //用map来记录因子以及因子的次幂
}
if(n!=1) factor[n]++; //对于素数的考虑
for(map<int,int>::iterator iter=factor.begin();iter!=factor.end();iter++) { if(iter!=factor.begin()) printf("×"); printf("%d^%d",iter->first,iter->second); } printf("\n");
factor.clear(); } return 0; }
|
因子分解结果:x=a1^p1*a2^p2*……*an^pn
例如:12=2^2*3^1
阅读(826) | 评论(0) | 转发(0) |