现在的位置: 首页 > 综合 > 正文

把任意一个正整数分解成几个素因子的幂的乘积

2013年08月05日 ⁄ 综合 ⁄ 共 1241字 ⁄ 字号 评论关闭

问题描述:

     把任意一个正整数分解成几个素因子的幂的乘积

程序实现:

#include <iostream>   

#include <math.h> 
#include <conio.h> 
using namespace std;  
       
// 判断一个数是否是素数   
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, int a[100], int b[100])  
{  
    int k = 0, j = 0;
    int flag = 0;
     
    if(!IsPrimeNum(number))  
    {  
        for (int i = int(sqrt(number));i>1;i--)  
        {  
            if((number%i)==0)   
            {             
                DivideNum(i, a, b); // 对除数进行分解   
  
                number = number/i;  
  
                DivideNum(number, a, b); // 对商进行分解   
  
                break;  
            }  
        }  
    }   
    else  
    {
        j = 0;
        flag = 0;
          
        while (a[j] != 0)
        {  
           if (a[j] == number)
           {
               b[j] = b[j] + 1;
               flag = 1;     
           }
           
           j++;
        }
        if (flag == 0)
        {
           a[j] = number;
           b[j] = 1;
        }
                      
        //cout<<number<<"   ";  
    }
}  
  
int main(void)    

    int prime[100] = {0}, power[100] = {0}; 
    int number;
    int i = 0;
      
    cout<<"please input a number: ";  
    cin>>number;  
  
    DivideNum(number, prime, power);  
    
    cout << endl << endl << number << "分解后的素因子的幂乘积为: ";
    while (prime[i] != 0)
    {
        cout << prime[i] << "*<" << power[i] << ">  "; 
        i++; 
    }
    
    cout<<endl;  
  
    getch();  
  
    return 0;    
}  

抱歉!评论已关闭.