0
点赞
收藏
分享

微信扫一扫

867. 分解质因数


文章目录

  • Question
  • Ideas
  • Code

Question

给定 n
个正整数 ai
,将每个数分解质因数,并按照质因数从小到大的顺序输出每个质因数的底数和指数。

输入格式
第一行包含整数 n

接下来 n
行,每行包含一个正整数 ai

输出格式
对于每个正整数 ai
,按照从小到大的顺序输出其分解质因数后,每个质因数的底数和指数,每个底数和指数占一行。

每个正整数的质因数全部输出完毕后,输出一个空行。

数据范围
1≤n≤100
,
2≤ai≤2×109
输入样例:
2
6
8
输出样例:
2 1
3 1

2 3

Ideas

Code

#include <iostream>
#include <algorithm>

using namespace std;

void divide(int x)
{
    for (int i = 2; i <= x / i; i ++)
    {
        if (x % i == 0) // 是合数
        {
            int s = 0;
            while(x % i == 0)
            {
                x = x / i;
                s ++;
            }
            cout << i << ' ' << s << endl; // 底数指数
        }
    }
    if (x > 1) cout << x << ' ' << 1 << endl; // n中唯一大于sqrt(n)的质因子
    cout << endl;
}

int main()
{
    int n;
    cin >> n;
    while (n -- )
    {
        int x;
        cin >> x;
        divide(x);
    }

    return 0;
}


举报

相关推荐

0 条评论