C语言问题(求思路)

来源:百度知道 编辑:UC知道 时间:2024/06/28 12:49:48
例如:
7可以分成 1+5+1, 2+3+2, 1+1+3+1+1, 3+1+3, 1+1+1+1+1+1+1
4=2+2
程序功能为:将任意一个数分解为 一串数字之和 这些数字必须是素数 并且前后对称!
希望
各位
提示提示
思路即可

从最外侧入手
(int)7/2 值为3,所以最外侧最大为3
1+X+1 当i=1时 7-i*2=5 (int)(5/2) =2 所以可以为0,1,2
1+0+x+0+1。。。。

1+1+x+1+1
1+2+x+2+1
2+X+2 当i=2时 7-i*2=3 (int)(3/2) =1 所以可以为0,1
2+0+x+0+2
2+1+x+1+2
3+X+3 当i=3时 7-i*2=1 (int)(1/2) =0 所以可以为0
3+x+3
明白?

考虑一下用链表。是可以实现的,不过麻烦。
构建一个函数,使用动态链表,把任意一个数X分成多个素数(a,b,c...)的和:
x=a+b+c...
然后,考虑对称性。
现在只能想到这个了。好麻烦啊。
等你做出来了,希望你能和大家一起分享啊。呵呵

#include "stdio.h"

void main()
{
int n;
scanf("%d", &n);

if (n == 1)
{
printf("1=1\n");
return;
}

if (n == 2)
{
printf("2=1+1\n");
return;
}

int *a = new int[n];
int top = 0;
a[0] = n - 1;
a[1] = 1;
top = 2;

int i;
do{
printf("%d=%d", n, a[0]);
for (i = 1; i < top; i++)
{
printf("+%d", a[i])