• 分解问题


    描写叙述

    请你写一个程序,读如一个正整数。请找出全部质因数的连乘,比如: 
    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("
    ");
        }
        return 0;
    }
    


    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    ecshop 调用指定分类的推荐,热卖,新品
    ecshop 首页调用指定类产品
    html常用笔记
    ecshop 修改flash图片大小
    ecshop 删除随机版权
    Java Web(一) Servlet详解!!
    Git使用总结
    git clone命令使用
    Lucene学习总结之四:Lucene索引过程分析
    Lucene学习总结之二:Lucene的总体架构
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4807167.html
Copyright © 2020-2023  润新知