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