以下这份分解质因数的代码在 #define int long long 与 #define int __int128 的情况下结果不同,不知道为什么
数据:
1 198258624
//El Psy Kongroo
#include<bits/stdc++.h>
#define ll long long
#define int __int128
#define pb push_back
#define ri int
#define TIME (1e3 * clock() / CLOCKS_PER_SEC)
using namespace std ;
template <typename T>
inline void read(T&x){
x = 0 ; char c = getchar() ; bool flg = 1 ; while(c > '9' || c < '0'){if(c == '-')flg = 0 ; c = getchar() ;}
while(c >= '0' && c <= '9'){x = (x << 1) + (x << 3) + (c ^ 48) ; c = getchar() ;} x = flg ? x : -x ;
}
template <typename T,typename ...Args>
inline void read(T&x,Args&...args){read(x),read(args...);}
bool m_bg ;
const int N = 5e5 + 10 ;
int prm[N],pmn,vis[N] ;
template<typename T>inline void prt(T x){
if(x>9) prt(x/10);
putchar(x%10+'0');
}
template<typename T>inline void put(T x){
if(x<0) putchar('-'),x=-x;
prt(x);
}
template<typename T>inline void put(char ch,T x){
put(x),putchar(ch);
}
void prework(){
for(ri i = 2 ; i <= 1e5 ; i++){
if(!vis[i])prm[++pmn] = i ;
for(ri j = 1 ; j <= pmn && i * prm[j] <= 1e5 ; j++){
vis[i * prm[j]] = 1 ;
if(i % prm[j] == 0)break ;
}
}
}
int buc[N],cnt[N],bcn,x,y,ansx,ansy ;
int T,n,tmpn ;
bool m_ed ;
signed main(){
prework() ;
read(T) ; while(T--){
bcn = 0 ; read(n) ; tmpn = n ; for(ri i = 1 ; i <= pmn ; i++){
if(tmpn % prm[i] == 0){
bcn++ ; buc[bcn] = prm[i] ; cnt[bcn] = 0 ;
while(tmpn % prm[i] == 0)tmpn /= prm[i] , cnt[bcn]+=2 ;
}
}if(tmpn>1)buc[++bcn]=tmpn,cnt[bcn]=2 ;
for(ri i = 1 ; i <= bcn ; i++)cout<<(ll)buc[i]<<" "<<(ll)cnt[i]<<endl ;
ansx=ansy=0 ;
if(ansx&&ansy)put(' ',ansx),put('\n',ansy) ; else puts("impossible") ;
}
return 0 ;
}