造梦西游3妮的梦话全集:c语言问题?在线等

来源:百度文库 编辑:高校问答 时间:2024/05/09 07:35:48
将任意大于2的偶数分解成两个素数之和。
#include<stdio.h>
main()
{
int x,a,b,n,s=0;
printf("Input x(x>2),x=\n");
scanf("%d",&x);
if(x%2==0)
{
for(a=2;a<=x/2;a++)
for(n=2;n<=a-1;a++)
{
if(a%n==0)break;
if(a==n)
{
b=x-a;
for(n=2;n<=b-1;b++)
if(b%n==0)break;
if(b==n)
{
printf("%d=%d+%d\t",x,a,b);
break;
}
}
}

}
else
printf("Input x%2==0");
}

为什么电脑不执行呀!

我的这个好用

main()
{
int n,i;
printf("nplease input a number:n");
scanf("%d",&n);
printf("%d=",n);
for(i=2;i<=n;i++)
{
while(n!=i)
{
if(n%i==0)
{
printf("%d*",i);
n=n/i;
}
else
break;
}
}
printf("%d",n);
}

break是跳出本层循环,但是你的上一层for循环后面并无其他内容可执行,所以此时break是跳出两层循环,到else语句,因为执行了上面的if语句,所以不执行else语句.自然就什么都不执行了.
对于即不想让其执行,又能得到恰当的数,最好用while循环.

if(a%n==0)break;
if(a==n)

a==n的时候 (a%n==0) 也成立啊,就跳出去了,不执行下面的if

什么叫不执行,你说说具体的错误情况。