PAT 甲级 1059 Prime Factors (25分)本人暴力代码以及坑点分析

1059 Prime Factors (25分)本人暴力代码

这题没啥好说的,暴力,唯一的坑点就是输入样例是1需要特判!附赠本人暴力代码

#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
typedef long long LL;
int isPrime(LL n)
{
    if(n<=1) return -1;
    LL sqr=(int)sqrt(1.0*n);
    for(int i=2;i<=sqr;i++)
    {
    if(n%i==0) return -1;
    }
    return 1;
}
LL tag[100000]={0};
int main()
{

    LL num,num1,temp=2;
    scanf("%lld",&num);
    num1=num;
    while(num>0&&temp<=num)
    {
        while(isPrime(temp))
    {
        while(num%temp==0)
        {tag[temp]++;num=num/temp;}
        if(num%temp!=0)
        {break;}
    }
        temp++;
    }
    if(num1==1)
        printf("%lld=1",num1);
    else{
    printf("%lld=",num1);
    for(int i=0;i<=temp;i++)
    {
        if(tag[i]!=0)
        {
        if(i==temp-1)
        {
            if(tag[i]>1)
            printf("%lld^%lld",i,tag[i]);
            else {printf("%lld",i);}
        }
        else
        {
            if(tag[i]>1)
            {printf("%lld^%lld*",i,tag[i]);}
            else {printf("%lld*",i);}
        }
        }
    }}
}

你可能感兴趣的:(PAT甲级)