Chinaunix首页 | 论坛 | 博客
  • 博客访问: 669452
  • 博文数量: 81
  • 博客积分: 1659
  • 博客等级: 上尉
  • 技术积分: 1286
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-02 16:36
个人简介

专注于嵌入式和图像处理

文章分类

全部博文(81)

文章存档

2014年(1)

2013年(7)

2012年(46)

2011年(27)

分类: C/C++

2013-08-13 08:54:23

 一个数的质因数分解式就是把一个数分为一个个质数因子,比如60,它的质因数分解式就是2 2 3 5 ,首先这几个数都是质数,其次它们相乘为60。看《算法设计与分析基础》,见到书上提到数的质因数分解式,便编了一个小程序实现求一个数的质因数分解式。算法思路是这样的:

1.       首先判断该数是否为质数,如果不是就进行分解,如果是就输出;

2.       分解步骤是这样的:使用循环从被分解数的平方根中开始相除,一旦相除余数为0,就分别对余数和商进行类似分解,退出循环。

 

很显然,这个算法要使用递归。

 

代码如下:

 

#include

using namespace std;

#include

#include

 

// 判断一个数是否是素数

bool IsPrimeNum(int number)

{

    bool bIsPrimeNum = true;

       for (int i = int(sqrt((double)number));i>1;i--)

       {

        if((number%i)==0)

               bIsPrimeNum = false;

       }

       return bIsPrimeNum;

}

 

// 分解

void DivideNum(int number)

{

    if(!IsPrimeNum(number))

       {

               for (int i = int(sqrt(number));i>1;i--)

               {

                      if((number%i)==0)

                      {          

                DivideNum(i); // 对除数进行分解

                         number = number/i;

                DivideNum(number); // 对商进行分解

                   break;

                      }

                    

               }

       }

  else

        cout<

}

 

 

int main(int argc, char* argv[])

{

       int number;

    cout<<"please input a number: "<

    cin>>number;

       DivideNum(number);

      cout<

       getch();

       return 0;

}

阅读(3592) | 评论(0) | 转发(0) |
0

上一篇:VC加载png格式图片作为背景

下一篇:测试

给主人留下些什么吧!~~