----------------解决方案--------------------------------------------------------
汗。。。。。。偶是菜鸟。。。。。又被BS了。。。
----------------解决方案--------------------------------------------------------
稍微改了一下
#include "stdio.h"#include"stdlib.h"
int b[1000]={1};
int j;
int b1;
int rem=1;
int m=0;
int pn()
{ int flag;
if(j>0&&rem)
b[j]=b[j-1];
rem=1;
b[j]=b[j]+1;
do
{ flag=0;
int flag1=0;
for(int i=1;i<=b[j];i++)
if(b[j]%i==0)
{
if(++flag1==3)
flag=1;
}
}while(b[j]++&&flag);
b[j]=b[j]-1;
return b[j];
}
int reduce(int s,int n)
{
if(s>0)
{
n=pn();
j++;
}
if(s==0)
return 1;
if(s<0)
{
j=j-2;
rem=0;
return 0;
}
if(s>b1||b[j]>b1)
{
printf("没有结果!");
exit(0);
}
if(reduce(s-n,n))
{
return 1;
}
return(reduce(s+b[j],b[j]));
}
int main()
{
scanf("%d",&b1);
while(b[0]<b1)
{
j=0;
if(reduce(b1,b[0]))
{ if(m<j)
{
for(int i=0;i<j;i++)
printf("%d ",b[i]);
m=j;
printf("\n");
}
}
}
return 0;
}
----------------解决方案--------------------------------------------------------
原本想把改成可以分解成所有不同素数组合得..太长了..所以可以稳定输出最长素数组合..其它也输出间或的组合..属于不稳定的方法...可以看看就好..代码风格很糟糕..
----------------解决方案--------------------------------------------------------
by 雨中飞燕 C/C++学习群(TC勿进)
什么么 呵呵C/C++ 只是编程语言而已 编程 还是 编程思想最有意思
C的 一些底层 数据 算法也比较不错
再说了 现在大学学C有几个不是 TC的
----------------解决方案--------------------------------------------------------