求C语言程序设计问题有20个石头,没人每次可拿1或2或3个石头,但每次拿完不能剩下素数个,请问怎么用C语言统计几种方法,并写每次拿完剩下的石头数

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 13:11:22
求C语言程序设计问题有20个石头,没人每次可拿1或2或3个石头,但每次拿完不能剩下素数个,请问怎么用C语言统计几种方法,并写每次拿完剩下的石头数

求C语言程序设计问题有20个石头,没人每次可拿1或2或3个石头,但每次拿完不能剩下素数个,请问怎么用C语言统计几种方法,并写每次拿完剩下的石头数
求C语言程序设计问题
有20个石头,没人每次可拿1或2或3个石头,但每次拿完不能剩下素数个,请问怎么用C语言统计几种方法,并写每次拿完剩下的石头数

求C语言程序设计问题有20个石头,没人每次可拿1或2或3个石头,但每次拿完不能剩下素数个,请问怎么用C语言统计几种方法,并写每次拿完剩下的石头数
这个其实还是比较简单的,你使用递归做就可以了.我刚帮你写了一个,你看看.
#include<stdio.h>
#include<math.h>

int count = 0;
int sum[20];

bool is_P(int n)
{
\x05int i;
\x05if(n<2)
\x05\x05return false;
\x05for(i=2;i*i<=n;i++)
\x05\x05if(n%i == 0)
\x05\x05\x05return false;
\x05return true;
}

void st(int n)
{
\x05int i;
\x05if(n == 0)
\x05{
\x05\x05for(i=0;i<count;i++)
\x05\x05\x05printf("%3d",sum[i]);
\x05\x05printf("\n");
\x05\x05return;
\x05}
\x05for(i=1;i<4&&i<=n;i++)
\x05\x05if(is_P(n-i) == false)
\x05\x05{
\x05\x05\x05sum[count] = n-i;
\x05\x05\x05count++;
\x05\x05\x05st(n-i);
\x05\x05\x05count--;
\x05\x05}
\x05return;
}

void main()
{
\x05st(20);
\x05return;
}
以下是运行结果: