c语言编程:验证哥德巴赫猜想:任何一个大于6的偶数均可表示为两个素数之和。

验证哥德巴赫猜想:任何一个大于6的偶数均可表示为两个素数之和。例如,6=3+3,8=3+5,…,18=5+13。要求将6~100之间的偶数都表... 验证哥德巴赫猜想:任何一个大于6的偶数均可表示为两个素数之和。例如,6=3+3,8=3+5,…,18=5+13。要求将6~100之间的偶数都表示为两个素数之和,输出时一行输出五组。

#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=%2d+%2d",i,s1,i-s1);
}
else if(pdss(i-s2)==1){
printf("%4d=%2d+%2d",i,s2,i-s1);
}
else if(pdss(i-s3)==1){
printf("%4d=%2d+%2d",i,s3,i-s1);
}
hh++;
if(hh%5==0){
printf("\n");
}
}

return 0;
}

int pdss(int a)
{
int rz,I,fhz;
double r,i;

I=0;
for(i=2;i<=pow(a,0.5);i++){
r=a*1.000000/i;
rz=r;
if(fabs(rz-r)-0<0.00000001){
I++;
}
}
if(I==0){
fhz=1;
}
else{
fhz=0;
}

return fhz;
}

代码静态分析
共发现 7个问题.
Yshh4.2.6.c: (in function main)
Yshh4.2.6.c:8:2: Return value (type int) ignored: scanf("d", &sr)Result returned by function call is not used. If this is intended, can cast result to (void) to eliminate message. (Use -retvalint to inhibit warning)
Yshh4.2.6.c: (in function pdss)
Yshh4.2.6.c:38:20: Function pow expects arg 1 to be double gets int: a To allow all numeric types to match, use +relaxtypes.
Yshh4.2.6.c:40:3: Assignment of double to int: rz = r
Yshh4.2.6.c:3:5: Function exported but not used outside
Yshh4.2.6: pdss A declaration is exported, but not used outside this module. Declaration can use static qualifier. (Use -exportlocal to inhibit warning)
Yshh4.2.6.c:53:1: Definition of pdss
展开
 我来答
听不清啊
高粉答主

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

#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;

}

xoaxa
2017-07-22 · TA获得超过8613个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3608万
展开全部

#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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
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之外,其余的这些都不会影响程序的正常运行,只是不符合规范。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
s15885823584
2012-12-26 · TA获得超过411个赞
知道小有建树答主
回答量:279
采纳率:0%
帮助的人:215万
展开全部
你的问题是什么啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式