C++质因数分解

// CPP.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<iostream>
#include<cstdlib>
#include<cmath>

using namespace std;

int main()
{
    int n, i;
    cout << "Please input a integer
";
    cin >> n;
    if (n <= 0)
    {
        cout << "Your input is not larger than 0.
";
        exit(-1);
    }
    cout << n << "=";
    while (n % 2 == 0 && n != 2)
    {
        cout << "2*";
        n /= 2;
    }
    int val = sqrt(n);
    for (i = 3; i <= val; i += 2)
    {
        while (val >= i)
        {
            if (n % i == 0)
            {
                cout << i << '*';
                n /= i;
                val = sqrt(n);
            }
            else
                break;
        }
    }
    cout << n << endl;
    return 0;
}

从别的地方转载而来的,我还没有验证过这个算法是不是质因数分解的最权威的算法,甚至是不是一个好的算法,不过经过若干的测试,发现结果还是不错的。而且纵览代码,在代码优化的一些细节上还有很有口味价值的。

原文地址:https://www.cnblogs.com/shuada/p/3477629.html