
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 展开
#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 展开
4个回答
展开全部
#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;
}
展开全部
#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之外,其余的这些都不会影响程序的正常运行,只是不符合规范。
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之外,其余的这些都不会影响程序的正常运行,只是不符合规范。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的问题是什么啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询