第五章5.2

题目内容:

编写程序:验证哥德巴赫猜想之一—— 2000以内的正偶数(大于等于4)都能够分解为两个质数之和。每个偶数表达成形如:4=2+2的形式,请每行输出4个偶数及其分解结果。

提示:每一个偶数可能存在多种分解表达形式,但是只要求出第一种分解就停止求其他分解,
输出结果中每一个偶数只给出一种分解的表达

输入格式:

输出格式:

单个表达式用以下格式字符串输出:

"%4d=%4d+%4d"

每行输出4个,每个表达式的后面要输出一个空格与后面的表达式进行分割,但本行的第4个表达式后不能有空格,要直接换行。

注意:最后一行输出有可能不足4个表达式,则该行最后一个表达式的后面仍然要输出一个空格。

输入样例:

输出样例:

   4=   2+   2    6=   3+   3    8=   3+   5   10=   3+   7

  12=   5+   7   14=   3+  11   16=   3+  13   18=   5+  13

  20=   3+  17   22=   3+  19   24=   5+  19   26=   3+  23

……

1980=   7+1973 1982=   3+1979 1984=   5+1979 1986=   7+1979

1988=  37+1951 1990=   3+1987 1992=   5+1987 1994=   7+1987

1996=   3+1993 1998=   5+1993 2000=   3+1997 

时间限制:500ms内存限制:32000kb

#include<stdio.h>
#include<math.h>
int primejudge(int a)
{
	int i,j;
	j=(int)sqrt(1.0*a);
	
	for(i=2;i<=j;i++)
				{
				if(a%i==0) a=0;
				}
		
	if(a!=0) a=-1;
	return a;
}



int main()
{
	int a[2001],i=2,j=1,sum=0,m,k=0,t=0;
	while(i<=2000)
	{
		if(primejudge(i)==-1)
		{
			a[j++]=i;
			sum++;
		}
	i++;
	
	}
	for(m=4;m<=2000;m=m+2)
	{
		for(i=1;i<=sum;i++)
			{
				if(k==1)
				{k=0;break;}
				for(j=i;j<=sum;j++)
				{
					if(t==4)
					{printf("\n");t=0;}
					
					if(a[i]+a[j]==m)
						{
							
							
							printf("%4d=%4d+%4d",m,a[i],a[j]);
							k=1;
							t++;
							if(t!=4)
							{printf(" ");}
							break;
					}
					
				}
			}
	}

getchar();getchar();
return 0;
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值