题目描述
给定一个正整数 n,设 n=p1×p2×…pk,其中pi 均为质数,对 1≤i,k,pi≤pi+1。
可以证明,序列 pi 是唯一的。
对每个给定的 n,请你求出 p1,p2,…pk。
输入格式
本题单测试点内有多组测试数据。
第一行是一个整数,表示测试数据组数 T。
接下来 T 行,每行一个整数,表示一组数据的 n。
输出格式
对每组数据,输出一行若干个用空格隔开的整数,依次表示 p1,p2,…pk。
输入输出样例
输入 #1
9 2 3 4 5 6 7 8 9 10
输出 #1
2 3 2 2 5 2 3 7 2 2 2 3 3 2 5
说明/提示
数据规模与约定
对全部的测试点,保证 1≤T≤10,1≤n<=1000000000000
#include<bits/stdc++.h>
using namespace std;
long long t;
int main(){
//快读
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
//输入数据
cin>>t;
while(t--){
long long n;
cin>>n;
while(n%2==0){//先分解质因子2
n/=2;
cout<<2<<" ";
}
for(long long i=3; i*i<=n; i+=2){//再分解其他的质因子
while(n%i==0){
n/=i;
cout<<i<<" ";
}
}
if(n!=1) cout<<n;//如果没有分完,要输出剩下的n
cout<<endl;//换行
}
return 0;
}