hdu 1164 Eddy's research I

#include<stdio.h>
#include<string.h>
#include<math.h>
bool visit[100000];
int prime[100000];
int n;
int x;
int init_pri()
{
    memset(visit,true,sizeof(visit));
    int num=0;
    for(int i=2;i<=n;i++)
    {
        if(visit[i]==true)
        {
            num++;
            prime[num]=i;
        }
        for(int j=1;(j<=num)&&(i*prime[j])<=n;j++)
        {
            visit[i*prime[j]]=false;
            if(i%prime[j]==0)break;
        }
    }
   //for(int i=0;i<50;i++)
    //printf("%d ",prime[i]);
    return 0;
}
int main()
{
    n=70000;
    init_pri();

    while(scanf("%d",&x)!=EOF)
    {
        int k=1;
        for(int i=1;i<=x;i++)
        {
            //printf("$%d$ ",prime[i]);
            if(x%prime[i]==0)
            {
                x/=prime[i];
                if(k==1)
                {
                    printf("%d",prime[i]);
                    k=0;
                    while(x%prime[i]==0)
                    {
                        x/=prime[i];
                        printf("*%d",prime[i]);
                    }
                }
                else
                {
                    printf("*%d",prime[i]);
                    while(x%prime[i]==0)
                    {
                        x/=prime[i];
                        printf("*%d",prime[i]);
                    }
                }
            }
        }
        printf("\n");
    }
    return 0;
}
原文地址:https://www.cnblogs.com/XDJjy/p/3074533.html