功能:把N分解成 N=X^a+Y^b+Z^c X,Y,Z時N的質因子
輸入:N
輸出:X a
Y b
Z c
代碼:
#include<cstdio>
#include<iostream>
#include<cstring>
#include<map>
#include<cmath>
using namespace std;
map<long long,long long> mapK;
bool isPrime(long long k){
for(int i=2;i<=sqrt(k*1.0);i++){
if(k%i==0) return false;
}
return true;
}
long long findPrime(long long K){
for(int i=2;i<=sqrt(K);i++){
if(isPrime(i)!=0&&K%i==0) return i;
}
}
int main(){
int times;
long long K;
map<long long,long long>::iterator itK;
scanf("%d",×);
for(long long i=0;i<times;i++){
scanf("%d",&K);
while(isPrime(K)==0){
mapK[findPrime(K)]++;
K=K/findPrime(K);
}
mapK[K]++;
for(itK=mapK.begin();itK!=mapK.end();itK++ ){
cout<<itK->first<<" "<<itK->second<<endl;
}
}
}
}