首页
社区
课程
招聘
[原创]一个整数分解程序
发表于: 2007-6-25 00:00 4571

[原创]一个整数分解程序

2007-6-25 00:00
4571
题目是这样的把一个整数分解,要所有的组合情况。。
比如6=1*6=2*3
我写了一个程序:
#include<math.h>
#include<stdio.h>
void factor(int* a,int n,int k)
{
int i,j,Compare;
Compare=(k ==0 ?0:1);
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0&&i>=a[k])
{
a[k]=i;
for(j=0;j<=k;j++)
printf("%d*",a[j]);
printf("%d\n",n/i);
factor(a,n/i,k+1);
}
}

}
void main()
{
int a[100]={0};
int n;
printf("Input a number: ");
scanf("%d",&n);
factor(a,n,0);
}

当输入24时结果是这样的:
Input a number: 24
2 * 12
2 *  2 *  6
2 *  2 *  2 *  3
2 *  3 *  4
2 *  3 *  2 *  2
3 *  8
4 *  6
Press any key to continue
感觉用递归做挺简单的,但是肯定还有其他方法做,利用这种方法也可以把一个数的所有数的和找出来,比如5=1+1+1+1+1+1=1+4=1+1+3=1+1+1+2=2+3。

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 231
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qdk
2
看组合数学时,有许多经典的算法,比如求集合的全排列。
也看到关于你这种类型的算法,不过忘了。
2007-6-27 16:07
0
游客
登录 | 注册 方可回帖
返回
//