分解质因数

#include<iostream>
using namespace std;

const long maxn=10010;
int prime[maxn],p[maxn],pnum=0;

struct factor{
    int x;
    int cnt;
}fac[10];


void findPrime(){
    for(int i=2;i<maxn;i++){
        if(prime[i]==false){
            p[pnum++]=i;
            for(int j=i+i;j<maxn;j+=i){
                prime[j]=true;
            }        
        }
    }
}

int index=0;
void findFactor(int Num){    
    for(int i=0;i<pnum;i++){
        if(Num%p[i]==0){
            fac[index].x=p[i];
            fac[index].cnt=0;
            while(Num%p[i]==0){
                fac[index].cnt++;
                Num/=p[i];
            }
            index++;
        }
        if(Num!=1){
            fac[index].x=Num;
            fac[index].cnt=1;
        }
    }
}

int main(){    
    findPrime();
    int N;
    cin>>N;
    if(N==1) printf("1=1\n");
    else{
        findFactor(N);
        printf("%d=",N);
        for(int i=0;i<index;i++){
            if(fac[i].cnt==1){
                printf("%d",fac[i].x);
            }
            else{
                printf("%d^%d",fac[i].x,fac[i].cnt);
            }
            if(i!=index-1) printf("*");
        }
        printf("\n");
    }
    return 0;    
}

 

posted on 2020-10-07 10:03  Taurus20000519  阅读(103)  评论(0)    收藏  举报