救命!!vc题目《求改错》:从键盘上输入一个大于6的偶数,将它表示成两个素数之和。

来源:百度知道 编辑:UC知道 时间:2024/05/23 19:07:31
vc题目:从键盘上输入一个大于6的偶数,将它表示成两个素数之和。例如6=3+3,8=3+5,…,18=7+11。要求,若输入值不满足要求,提示错误并且要求再次输入,直至输入正确为止。看看我的解答错哪
#include <stdio.h>
#include <math.h>
int main()
{
int a,b=2,c=2,d=2,n=0;
while(n<1)
{
scanf("%d",&a);
if(a%2==0&&a>=6)
{
while(b<a)
{
while(d<=sqrt(c)&&c<a)
{
if(c%d==0)
{
c++;
continue;
}
d++;
}
if(a==b+c) printf("%d=%d+%d",a,c,b);
c=2;
d=2;
while(d<=sqrt(b)&&b<a)
{
if(b%d==0)
{
b++;
continue;
}
d++;
}
d=2;
}

}
else
{
printf("错误,再次输入.");
continue;
}
n++;
}
}
#include <stdio.h>
#include

说实在话,楼主的程序编的确实相当差劲,且不说错误不错误,就从你编程的思路上来说就不是一个合格的编程思路,建议你将功能分开写函数,这样才是一个好习惯。不然以后你的程序也不会有人读的。

说实话,看不懂你的程序!
我跟你写了个,拿去用把
#include <stdio.h>
#include <math.h>
bool bushizhishu(int i)
{
int j=2;
bool k=false;
while(j<=sqrt(i))
{
if(!(i%j))
{
k=true;
break;
}
j++;
}
if(!k)return false;
return true;
}

int main()
{
int a,b,c,n=0;
while(n<1)
{
scanf("%d",&a);
if(((a%2)==0)&&a>=6)
{
b=a/2;
c=b;
while(bushizhishu(b)||bushizhishu(c))
{
b++;
c--;
}
printf("%d=%d+%d",a,b,c);
}
else
{
printf("错误,再次输入.");
continue;
}
n++;
}
return 0;
}

1、当d=2,c=2时你的d<=sqrt(c)条件刚开始就无法满足。
2、a 是b和c的和,条件应该为小于a/2。
3、2和3是特殊的质数。