浙大PAT甲级 1059

分解因式题,可先筛选素数,再进行遍历判断。

AC代码:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int mark[100000];
int prime[100000];
int num=0;
void init()
{
    for(long long i=2;i<100000;i++)
    {
        if(mark[i]==0)
        {
             prime[num++]=i;
             for(long long j=i*i;j<100000;j+=i)
             {
                 mark[j]=1;
             }
        }
    }
}
int main()
{
    init();
    int n;
    scanf("%d",&n);
    if(n==1)
    {
        printf("1=1");
        return 0;
    }
    printf("%d=",n);
    int flag=0;
    for(int i=0;i1)
        {
            if(flag==0)
            {
                printf("%d^%d",prime[i],d);
                flag=1;
            }
            else
            {
                printf("*%d^%d",prime[i],d);
            }
        }
    }
    if(n!=1)
    {
         if(flag==0)
            {
                printf("%d",n);
            }
            else
            {
                printf("*%d",n);
            }
    }
}


你可能感兴趣的:(浙大pat)