验证4~100中的偶数(包括1和100)是否可以由两个质数相加得到,并且把所有表达式列出。
运用了for循环语句嵌套,if语句判断是否为质数,但是运行只从46开始.. T^T,大神告诉我我哪里错了
程序截图
显示结果:从46开始了
看到这个程序名我也是被震到了,居然这么厉害,还是中文的,我决定看看你的代码……
你把输出语句拿到循环的外边,应该差不多
哥德巴赫猜想:任何一个大于等于6的偶数均可表示为两个素数之和,而且肯定是两个奇素数,因为偶素数只有一个。所以你这个代码可以优化,能够降低很多没哟必要的判断。此外,建议将判断素数的部分拿出来做一个子函数。最后,正常应该是从6开始输出的6=3+3。
#include
#include
int main()
{
int b,c,e,i,f,g;
for (i=4; i<=100; i+=2)
{
for (f=2; f<=i/2; f++)
{
e = 0;
for (b=2; b<f; b++)
{
if (f%b == 0)
{
e = 1;
break;
}
}
if (e == 0)
{
g = 0;
c = i - f;
for (b=2; b<c; b++)
{
if (c%b == 0)
{
g = 1;
break;
}
}
}
if (g == 0)
{
printf("%d=%d+%d\n", i, f, c);
break;
}
}
}
system("pause");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
int b,c,e,i,f,g;
for (i=4; i<=100; i+=2)
{
for (f=2; f<=i/2; f++)
{
e = 0;
for (b=2; b<f; b++)
{
if (f%b == 0)
{
e = 1;
break;
}
}
if (e == 0)
{
g = 0;
c = i - f;
for (b=2; b<c; b++)
{
if (c%b == 0)
{
g = 1;
break;
}
}
}
if (g == 0)
{
printf("%d=%d+%d\n", i, f, c);
break;
}
}
}
system("pause");
return 0;
}