3道编程题

来源:百度知道 编辑:UC知道 时间:2024/06/25 05:49:50
1、任何一个大于7的奇数总可以分解为三个素数之和。编写程序求7—2000以内所有奇数的分解形式
2、任何大于2的自然数都可以写成不超过四个平方数之和。如:8=2^2+2^2;14=1^2+2^2+3^2 由键盘输入自然数N(2 < N < 2000) ,输出其不超过四个平方数之和的表示式。
3、如果一个数从左边读和从右边读都是同一个数,就称为回文数.例如6886就是一个回文数,求出所有的既是回文数又是素数的三位数。
小弟我只学到过程,请简单点,都用函数做。

如果问题的解有多个是都输出还是只输出一个?
我可以来帮你解答

我先按照只输出一个来写代码

#include<stdio.h>//1

int main()
{
int a[400];//2000以内的质数不超过400个
a[0]=2;//初始化前两个质数
a[1]=3;
//开始用递归法寻找质数
int p,i,j,k;
for(i=2;a[i-1]<2000;i++)
{

while(1)
{
p=a[i-1]+2;//已经找到前i个质数,开始寻找第i+1个

for(j=1;a[j]*a[j]<=p&&j<=i-1;)//判断p是不是质数
{

if(p%a[j]==0)
{
p+=2;
j=1;
continue;//如果不是,p加2,j归1,再判断
}

j++;
}

a[i]=p;//循环结束,说明是质数,把p赋给a[i]
break;
}

}

p=7;
for(i=0;a[i]<p;i++)
{

for(j=0;a[j]+a[i]<p;j++)
{