题意
给你一个数字,只是它的表示形式是它的素数,问你的素数表示
思路
质因数分解
代码
/**
* author: andif
* created: 30.07.2023 13:33:18
**/
#include<bits/stdc++.h>
using namespace std;
#define de(x) cerr << #x << " = " << x << endl
#define dd(x) cerr << #x << " = " << x << " "
#define rep(i, a, b) for(int i = a; i < b; ++i)
#define per(i, a, b) for(int i = a; i > b; --i)
#define mt(a, b) memset(a, b, sizeof(a))
#define sz(a) (int)a.size()
#define fi first
#define se second
#define qc ios_base::sync_with_stdio(0);cin.tie(0)
#define eb emplace_back
#define all(a) a.begin(), a.end()
using ll = long long;
using db = double;
using pii = pair<int, int>;
using pdd = pair<db, db>;
using pll = pair<ll, ll>;
using vi = vector<int>;
const db eps = 1e-9;
int main() {
qc;
int t; cin >> t;
while(t--) {
int k; cin >> k;
int n = 1;
rep(i, 0, k) {
int p, e; cin >> p >> e;
n *= pow(p, e);
// dd(p), de(e);
}
n--;
// de(n);
vi p, e;
for (int i = 2; i * i <= n; ++i) {
if (n % i) continue;
p.eb(i);
int c = 0;
while(n % i == 0) {
c++;
n /= i;
}
e.eb(c);
}
if (n != 1) {
p.eb(n);
e.eb(1);
}
per(i, sz(p) - 1, -1) {
cout << p[i] << " " << e[i];
if (!i) cout << '\n';
else cout << ' ';
}
}
return 0;
}