将一个自然数分解为一系列素数的乘积,该如何处理
将一个自然数分解为一系列素数的乘积
怎么分?C++6.0
------解决方案--------------------
http://zhaojian2006.blog.enorth.com.cn/article/155167.shtml
------解决方案--------------------
虽然在时间上不可能达到很快,但绝对是有办法做得到的。请看以下代码:
怎么分?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); }