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