质因数分解
//代码只适合部分情况,没考虑1的情况 #include<bits/stdc++.h> using namespace std; bool hashTable[1000010]={false}; int prime[1000010]; struct node{ int x; int cnt; }fac[10]; int main(){ int t=0; for(int i=2;i<=1000;i++){//求解质数 if(hashTable[i]==false){ prime[++t]=i; for(int j=i+i;j<=1000;j=j+i){ hashTable[j]=true; } } } int n; cin>>n; int tot=0; for(int i=1;i<=t;i++){ if(n%prime[i]==0){ fac[tot].x=prime[i]; fac[tot].cnt=0; while(n%prime[i]==0){ fac[tot].cnt++; n/=prime[i]; } tot++; } } for(int i=0;i<tot;i++){ if(i!=0) cout<<"+"; cout<<fac[i].x<<"^"<<fac[i].cnt; } return 0; }