2011年4月23日 星期六

分享

高中生程式解題系統 a010: 因數分解

#include <stdio.h>
#include <math.h>


int main(void) 
{
    
    int input,index,i,j,k;

    while(scanf("%d",&input)!=EOF)
    {
        index= 0;

        for(i=2;i<=sqrt(input);i++)
        {
            if((input % i) == 0)
            {
                index++;
                break;
            }
        }
        if(index>=1)
        {
            for(j=2;j<=input;j++)
            {
                if(input % j == 0)
                {
                    printf("%d",j);
                    k = 0;
                    while(input % j == 0)
                    {
                        k++;
                        input /= j;
                    }
                    if(k > 1)
                        printf("^%d",k);
                    if(input > 1)
                        printf(" * ");
                }
            }        
            printf("\n");            
            
        }
        else
            printf("%d\n",input);
        
        
        
    }
    
    return 0;
}

1 則留言: