将一个自然数分解为一系列素数的乘积
怎么分?C++6.0
[解决办法]
http://zhaojian2006.blog.enorth.com.cn/article/155167.shtml
[解决办法]
虽然在时间上不可能达到很快,但绝对是有办法做得到的。请看以下代码:
- C/C++ code
#include <iostream>using namespace std;#include <math.h>bool bSushu(int num){ // 该函数用来判断num是否是一个素数 if(num <= 1) return false; int mid = pow(num, 0.5); int i; for(i=2; i<=mid; i++){ if(num%i == 0) break; } return (i>mid) ? true : false;}void Divide(int num){ // 递归分解 if(bSushu(num)){ cout<<num<<" "; return; } int i; for(i=2; i<num; i++){ if( bSushu(i) && num%i == 0 ){ Divide(num/i); cout<<i<<" "; return; } }}void main(){ int num; cout<<"Please input a number:"; cin>>num; cout<<"It could be divided into:"<<endl; Divide(num);}