永发信息网

用C程验证哥德巴赫猜想

答案:3  悬赏:10  手机版
解决时间 2021-02-18 20:19
程序填空,不要改变与输入输出有关的语句。
验证哥德巴赫猜想:任何一个大于6的偶数均可表示为两个素数之和。例如6=3+3,8=3+5,…,18=7+11。
输入两个正整数 m 和 n(6<=m, n<=100),将 m 到 n 之间的偶数表示成两个素数之和,打印时一行打印5组。
输出使用语句:printf("%d=%d+%d ", number, i, number - i);

下面是我写的.
#include "stdio.h"
#include "math.h"
int prime(int n);
int main(void)
{
int count, i, j, k, m, n, number;

scanf("%d%d", &m, &n);
if(m % 2 != 0) m = m + 1;
if(m >= 6){
for(number=m;number<=n;number=number+2){
k=m/2;
for(i=2;i<=k;i++){
if(prime(i)&&prime(m-i)){
printf("%d=%d+%d ",number,i,number-i);
break;
}
}
}
}
}
int prime(int n)
{
int t;
for(t=2;t<=n/2;t++){
if(n%t==0){
break;}
}
if(t>n/2){
return 1;}
else{
return 0;}
}

本人菜鸟,求指导

count没算进去,但是,现在问题是答案给出来时错的貌似
最佳答案
你只有第12行和第14行错了,只要把这两行的变量m改为number就可以了
#include "stdio.h"
#include "math.h"
int prime(int n);
int main(void)
{
int count, i, j, k, m, n, number;

scanf("%d%d", &m, &n);
if(m % 2 != 0) m = m + 1;
if(m >= 6){
for(number=m;number<=n;number=number+2){
k=number/2;
for(i=2;i<=k;i++){
if(prime(i)&&prime(number-i)){
printf("%d=%d+%d ",number,i,number-i);
break;
}
}
}
}
}
int prime(int n)
{
int t;
for(t=2;t<=n/2;t++){
if(n%t==0){
break;}
}
if(t>n/2){
return 1;}
else{
return 0;}
}
全部回答
您好,#include "stdio.h" #include "math.h"//是否是素数 int isprime(int n) { int i; for (i=2;i
  • 2楼网友:長槍戰八方
  • 2021-02-18 10:44
#include "stdio.h" #include "math.h" int prime(int n); int main(void) { int count, i, j, k, m, n, number; scanf("%d%d", &m, &n); if(m % 2 != 0) m = m + 1; if(m >= 6){ for(number=m;number<=n;number=number+2) { k=number/2; for(i=2;i<=k;i++) { if(prime(i)&&prime(number-i)) { printf("%d=%d+%d\n",number,i,number-i); break; } } } } } int prime(int n) { int t; for(t=2;t<=n/2;t++) if(n%t==0) return 0; return 1; }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯