| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 447 人关注过本帖
标题:求解答——歌德巴赫猜想
只看楼主 加入收藏
小煜
Rank: 2
来 自:广东汕头
等 级:论坛游民
帖 子:5
专家分:10
注 册:2010-12-1
结帖率:100%
收藏
 问题点数:0 回复次数:1 
求解答——歌德巴赫猜想
题目描述

在1000000以内验证歌德巴赫猜想:任何一个大于4的偶数都能分解成两个奇质数。若一个偶数有多种分解方案,选取第二个加数与第一个加数差最大的方案。

输入

多组测试数据,每组测试数据占一行,包含一个整数N,N为一个符合题目描述的整数。0表示输入结束,不要处理0。

输出

每组测试数据输出一行,为分解后的结果。输出格式见参考数据,两个加数中较小的加数在前,注意+号与=号前后的空格。

样例输入

8
20
42
0


样例输出

8 = 3 + 5
20 = 3 + 17
42 = 5 + 37


搜索更多相关主题的帖子: 歌德巴赫猜想 解答 
2010-12-07 23:11
小煜
Rank: 2
来 自:广东汕头
等 级:论坛游民
帖 子:5
专家分:10
注 册:2010-12-1
收藏
得分:0 
我自己做的,但是有错误;
#include<stdio.h>
#include<math.h>
int main(void)
{
int i,j,num;
int p,q,flagp,flagq;
while(scanf("%d",&num)&&num!=0)
{
if((num%2)==0&&num > 4&&num<=1000000)
{
p = 1;
do
{
p = p+1;
q = num - p;
flagp = 1;
flagq = 1;
for(i = 2;i <=(int)(floor(sqrt((double)(p))));i++)
{
if((p%i) == 0)
{
flagp = 0;
break;
}
}
j = 2;
while(j <= (int)(floor(sqrt((double)(q)))))
{
if ((q%j) == 0)
{
flagq = 0;
break;
}
j++;
}
}
while (flagp*flagq == 0);
printf("%d = %d + %d \n",num,p,q);
}
}
}
2010-12-07 23:18
快速回复:求解答——歌德巴赫猜想
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014186 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved