编写个算法实现整数因子分解 用分治方法

来源:百度知道 编辑:UC知道 时间:2024/09/28 10:35:42
问题描述 :
大于1 的正整数n 可以分解为:n=x1*x2*…*xm 。
例如,当n=12 时,共有8 种不同的分解式 :
12=12 ;
12=6*2 ;
12=4*3 ;
12=3*4 ;
12=3*2*2 ;
12=2*6 ;
12=2*3*2 ;
12=2*2*3 。
编程任务 :
对于给定的正整数n ,编程计算n 共有多少种不同的分解式 。

#include <stdio.h>
#include <math.h>
#define N 100
int fenjie(int n);
void main()
{
int n;
int count;
printf("input a number\n");
do
{
scanf("%d",&n);
}while(n<0);
count=fenjie(n);
printf("%d",count);
}
int fenjie(int n)
{
int i;
int k=0;
int temp=0;
int a[N];
for(i=2;i<sqrt(n);i++)
{
if(n%i==0)
{
a[k]=i;
k++;
}
}
for(i=0;i<k;i++)
{
for(j=0;i<k;i++)
{
if(a[i]*a[j]==n)
printf("%d=%d*%d\n",n,a[i],a[j]);
temp++;
}
}
return temp;
}

#include <iostream>

using namespace std;

int buf[32];

void calc_divisor( int num, int step )
{
if( num == 1 )
{
buf[step] = 1;

cout << " = ";
for( int i = 1; i < step; i++ )
{