程序填空,不要改变与输入输出有关的语句。
验证哥德巴赫猜想:任何一个大于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没算进去,但是,现在问题是答案给出来时错的貌似
用C程验证哥德巴赫猜想
答案:3 悬赏:10 手机版
解决时间 2021-02-18 20:19
- 提问者网友:遮云壑
- 2021-02-18 08:45
最佳答案
- 五星知识达人网友:执傲
- 2021-02-18 09:27
你只有第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 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;}
}
全部回答
- 1楼网友:过活
- 2021-02-18 11:33
您好,#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;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯