1059 Prime Factors (筛质数)

考考你的阅读理解:你猜猜如果输入为1,应该输出什么?

答案是输出1就行啦,想不到吧。。又浪费半个小时,pat是这样的。。

#include
using namespace std;
mapcnt;
void divide(long long u){
    for(int i=2;i<=u/i;i++){
        while(u%i==0){
            u/=i;cnt[i]++;
        }
    }
    if(u>1)cnt[u]++;
}
int main(){
    long long n;cin>>n;
    divide(n);
    printf("%ld=",n);
    int flag=0;
    if(n==1){
        cout<<"1";return 0;
    }
    for(auto x:cnt){
        if(flag)cout<<'*';
        if(x.second!=1){
            printf("%ld^%d",x.first,x.second);
        }else printf("%ld",x.first);
        flag=1;
    }
}

你可能感兴趣的:(算法)