C语言验证哥德巴赫猜想:任何一个大于6的偶数均可表示为两个素数之和。为什么是大于6??? 10

 我来答
刺友互
高粉答主

2019-06-20 · 每个回答都超有意思的
知道答主
回答量:3979
采纳率:100%
帮助的人:72.4万
展开全部

1、基于sympy的素数判定。

2、看看100是否可以写成两个素数的和。

3、908有15种方法,写成两个素数的和。

4、看看10到1000之间的偶数,最多有多少种方法可以写成两个素数的和。答案是52。

5、看看1000以内的偶数,有多少个数字有52种方法可以写成两个素数的和。恰好有一个。

6、看看1000以内的偶数,有哪些数字只有1种方法可以写成两个素数的和。只有12。

7、看看10000以内的偶数,有哪些数字只有1种方法可以写成两个素数的和。这个过程耗时长达3分钟,答案仍旧是只有12。

8、看看2000以内的偶数,有哪些数字不可以写成两个素数的和。这个反例不可能在2000以内找到,也就没有任何返回。

White_MouseYBZ
推荐于2017-12-16 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6626万
展开全部
这不必追究吧?原因可能是2是偶数,但2却不能是两个素数之和,所以这种问题就得有个下限,有人就定为6了。其实4也可以分解为两个素数2+2之和,6也可以分解为两个素数3+3之和,所以并非一定要大于6。记得原猜想是这么说的:一个充分大的偶数……其实就只是把2排除了……还有种解释,那就是偶数4和6被认为只能分解成“一个”素数之和(2+2和3+3),而大于6的偶数都能分解成两个不同的素数之和(比如8=3+5,10=3+7,20=3+17=7+13……等)。供参考。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-12-26
展开全部
Yshh4.2.6.c: (in function main)

Yshh4.2.6.c:8:2

这个是说在main()函数中的scanf()调用的返回值没有使用,可以通过将scanf("%d", &sr)的返回值类型转换为void来去掉这条提示

Yshh4.2.6.c: (in function pdss)
Yshh4.2.6.c:38:20
这个是说在pdss()函数中的pow()函数的参数类型是double,但是传入的实参类型是int

Yshh4.2.6.c:40:3

这个是说将一个double变量的值直接赋予了一个int变量.

Yshh4.2.6.c:3:5

Yshh4.2.6: pdss

这个是说虽然pdss()函数做了外部声明,但是没有被其它模块调用

其实仔细看看,除了Yshh4.2.6.c:40:3之外,其余的这些都不会影响程序的正常运行,只是不符合规范。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xoaxa
2017-07-22 · TA获得超过8610个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3477万
展开全部

#include<stdio.h> 
#include<math.h>
int pdss(int a);

int main(void) {
int i,num;
scanf("%d",&num);
if((num%2 == 0)&& (num >= 4)) {
for(i = 2;i < num/2;++i) {
if(pdss(i) && pdss(num - i))  {
printf(" = %d + %d",i,num - i);
}
}
}
printf("\n");
return 0;


int pdss(int a) {
int i,flag = 1;
for(i = 2;i <= sqrt(a) && flag;i++)
flag = (a%i);
return flag;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
听不清啊
高粉答主

2017-07-22 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

#include<stdio.h> 

#include<math.h>

int pdss(int a);

int main(void)

{int sr,i,s1=3,s2=5,s3=7,hh;

scanf("%d",&sr);

hh=0;

for(i=6;i<=sr;i=i+2){

if(pdss(i-s1)==1){

printf("%4d=%d+%2d",i,s1,i-s1);

}

else if(pdss(i-s2)==1){

printf("%4d=%d+%2d",i,s2,i-s1);

}

else if(pdss(i-s3)==1){

printf("%4d=%d+%2d",i,s3,i-s1);

}

hh++;

if(hh%5==0){

printf("\n");

}

return 0;


int pdss(int a) 

{int i; 

for(i=2;i*i<=a;i++)

if(a%i==0)return 0; 

return 1;

}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式