把整數分解為它的質因子以及質因子的冪次


功能:把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;
                    }
                    }

        }
}



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com