因数分解问题

描述

请你写一个程序,读如一个正整数,请找出所有质因数的连乘,例如:

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;
}

因数分解问题

时间: 2024-11-15 09:48:35

因数分解问题的相关文章

Vijos1889 天真的因数分解

描述 小岛: 什么叫做因数分解呢?doc : 就是将给定的正整数n, 分解为若干个素数连乘的形式.小岛: 那比如说 n=12 呢?doc : 那么就是 12 = 2 X 2 X 3 呀.小岛: 呜呜, 好难, 居然素数会重复出现, 如果分解后每一个素数都只出现一次, 我就会. wish: 这样来说, 小岛可以正确分解的数字不多呀.doc : 是呀是呀.wish: 现在问题来了, 对于给定的k, 第 k 个小岛无法正确分解的数字是多少? 格式 输入格式 输入只有一行, 只有一个整数 k. 输出格式

[LeetCode] Minimum Factorization 最小因数分解

Given a positive integer a, find the smallest positive integer b whose multiplication of each digit equals to a. If there is no answer or the answer is not fit in 32-bit signed integer, then return 0. Example 1Input: 48 Output: 68 Example 2Input: 15

数学#素数判定Miller_Rabin+大数因数分解Pollard_rho算法 POJ 1811&amp;2429

素数判定Miller_Rabin算法详解: http://blog.csdn.net/maxichu/article/details/45458569 大数因数分解Pollard_rho算法详解: http://blog.csdn.net/maxichu/article/details/45459533 然后是参考了kuangbin的模板: http://www.cnblogs.com/kuangbin/archive/2012/08/19/2646396.html 模板如下: //快速乘 (a

【快速因数分解】Pollard&#39;s Rho 算法

算法目的 给一个数n,快速提取n的一个因数. 算法根据:生日悖论 讲生日悖论之前,先看一个东西. 给出[1..1000]的数,从中任意选出一个数为k的概率是11000. 但是假如选出两个数p,q要求他们的差值为k,就是|p-q|=k的概率大概是1500,因为要去绝对值. 继续向下,选出l个数,使他们之间有两个数的差值为k,那么概率会随l的变大而变大,最终会趋近于1. 接下来是生日悖论: 我们随机选择一名学生,他的生日为 4 月 1 日的概率为 [1..365] 这相当于我们在[1..365]中随

因数分解(正整数)

因数分解:把一个整数分解成两个或更多的除1外的整数相乘的过程,而这些整数称为这个数的因数. 例:   若n = p x q,则p .q 称为 n 的因数. 一个数也可能有多个因数. 例: 20 =  4 x 5 = 2 x 10. 程序: 1 #include <stdio.h> 2 #include <math.h> 3 4 int main(){ 5 int n = -1; 6 int i; 7 int p,q; 8 9 while(n < 1){ 10 printf(&

ural 2003. Simple Magic 数论 因数分解

2003. Simple Magic Time limit: 1.0 second Memory limit: 64 MB Do you think that magic is simple? That some hand-waving and muttering incomprehensible blubber is enough to conjure wonderful gardens or a fireball to burn your enemies to ashes? The real

@总结 - [email&#160;protected] Miller-Rabin素性测试与Pollard-Rho因数分解

目录 @1 - 素性测试:Miller-Rabin算法@ @1.1 - 算法来源@ @1.2 - 算法描述@ @1.3 - 算法实现@ @2 - 因数分解:Pollard-Rho算法@ @2.0 - 参考资料@ @2.1 - 算法来源@ @2.2 - 算法描述@ @2.3 - 算法实现@ @1 - 素性测试:Miller-Rabin算法@ @1.1 - 算法来源@ 假如我们需要检测一个数 x 是否为素数,我们应该怎么做? 最显然的就是从 2~n-1 尝试去找到 x 的另一个因数. 当然可以稍微优

4 因数分解

题目:将一个正整数分解质因数. * 例如:输入90,打印出90=2*3*3*5. * 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:   * (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可. * (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步. * (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步. 1 public class _004YinShiFenJie {

算法--因数分解

题目: 各位在國小時都學過因數分解,都瞭解怎麼樣用紙筆計算出結果,現在由你來敎電腦做因數分解. 因數分解就是把一個數字,切分為數個質數的乘積,如 12=2^2 * 3 其中, 次方的符號以 ^ 來表示 输入说明 一個整數, 大於1 且 小於等於 1000000 输出说明 一個字串 范例输入 20 17 999997 范例输出 2^2 * 5 17 757 * 1321 分析:用两个数组a,b,a[i] 和 b[i] 分别存储由小到大排序的第i个质因数及其指数.对于每一个质因数,都会一次性"提取&