PTA整数の素因数分解

955 ワード

構想:質量i=2からnで除去し、除去すればn=n/iとなり、循環を続ける.次の質量数を探しきれず、次に除く.得られた素因数を配列で保持します.
まず素数を判断する関数を書かなければなりません.しかし、この考え方は素因子の大きな整数分解をすることはできない.
もう一つの考え方は,素数ふるい法で1~nの素数表を作成し,2から順番に除去することである.これはもっと頼りになるかもしれません.
以下は構想1のコードで,c++クラスで実現する.
初心者は辛抱強く見て、こんなにたくさん見ると自信がなくて下を見るのではなく、もっと研究して、自分の理解分析能力を高めましょう.
#include 
#include 
using namespace std;

class Solution
{
public:
    Solution(int num)
    {
        n = num;
    }
    void solve();// n         
private:
    int n;
};

int main()
{
    int n;
    while (cin >> n)
    {
        Solution obj(n);
        obj.solve();
    }
    return 0;
}
//          
bool prime( int p )
{
    int i;

    if(p<=1) return false;
    for(i=2; i<=sqrt(p); i++)
        if(p%i==0) return false;
    return true;
}


void Solution::solve()
{
    int a[30],i,j=0,b=n;
    if(prime(b)) cout<