1.仅验证是否成立
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,k,i,count1,count2;
for (k=4;k<=100;k=k+2) //取值范围为4-100
{
for (a=2;a<=k/2;a++) //将k拆为a+b a的范围为k/2
{
count1=0; //思考:why不能直接在int定义(待)
for (i=2;i<=a-1;i++) //验证a是否为质数
{
if (a%i==0)
count1++;
break; //只要存在一个约数即可退出循环(不要也可以 只是减少循环加快代码运行速度)
}
if (count1==0) //若a为质数
{
b=k-a;
count2=0;
for (i=2;i<=b-1;i++) //再验证b是否质数
{
if (b%i==0)
{
count2++;
break;
} //if后边有俩语句的话一定得加括号..开始我就因为这运行出来一直不对啊啊啊...
}
if (count2==0)
{
printf("%d=%d+%d\n",k,a,b);
break;
}
}
}
}
return 0;
}
个人还有点小问题希望大佬能解答:count1=0为什么不能直接在int定义...?
2.验证并输出所有成立的情况(与上边只有三处区别)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,k,i,count1,count2;
for(k=4;k<=100;k=k+2)
{
printf("%d",k); //区别1:先输出第一个等号左边数值
for(a=2;a<=k/2;a++)
{
count1=0;
for(i=2;i<=a-1;i++)
{
if(a%i==0)
count1++;
}
if(count1==0)
{
b=k-a;
count2=0;
for(i=2;i<=b-1;i++)
{
if(b%i==0)
count2++;
}
if(count2==0)
printf("=%d+%d",a,b); //区别2:这不能要break
}
}
printf("\n"); //区别3:该偶数全部输出后再换行
}
return 0;
}