读书人

将一个自然数分解为一系列素数的乘积,

发布时间: 2012-03-18 13:55:39 作者: rapoo

将一个自然数分解为一系列素数的乘积
怎么分?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);} 

读书人网 >C++

热点推荐