码迷,mamicode.com
首页 > 其他好文 > 详细

因数分解问题

时间:2014-08-07 13:18:40      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:模拟

描述

请你写一个程序,读如一个正整数,请找出所有质因数的连乘,例如: 
2016=2^5*3^2*7^1 
3888=2^4*3^5 
9800=2^3*5^2*7^2 
71329629=3^1*7^1*19^2*97^2 
5421051804 =2^2*3^1*7^1*19^3*97^2 
其中,正整数的范围是在1~5147499,若其中有两个以上的质数,则按由小而大的顺序依次印出! 

输入

第一行为用例个数N(N<=100),接下N行每行只有一个正整数x(2<=x<=5147499)。

输出

用一行输出x因数分解后的表示式。

样例输入

3
2016
3888
5147499

样例输出

2^5*3^2*7^1
2^4*3^5
3^1*7^2*19^2*97^1

题目来源

HHUACM

题目上传者

06036



#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
__int64 n;
int a[1000000];
struct node
{
    int x,y;
}s[1000000];
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int j=0,k=0;
       scanf("%I64d",&n);
       memset(a,0,sizeof(a));
       for(int i=2;i<=n;i++)
       {
           if(n%i==0)
           {
               n=n/i;
               a[i]++;
               i=i-1;
           }
       }
       for(int i=2;i<1000000;i++)
       {
           if(a[i]!=0)
            {
               s[k].x=i;
               s[k].y=a[i];
               k++;
            }
       }
       //if(k>=2)
       {
           printf("%d^%d",s[0].x,s[0].y);
           for(int i=1;i<k;i++)
           {
             printf("*%d^%d",s[i].x,s[i].y);
           }
       }
       printf("\n");
    }
    return 0;
}


因数分解问题,布布扣,bubuko.com

因数分解问题

标签:模拟

原文地址:http://blog.csdn.net/zhangweiacm/article/details/38414413

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!