【反思】
1.将一个整数n分解为两个数之和的时候,用两个for循环不是最佳解决方案。应当采用一个for循环,循环变量i表示第一部分,然后用n-i来表示另一部分。
2.审题很重要,题目已经说明了是大于等于4的正偶数,你就不能从2开始循环。
【代码】
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <string.h>
#define maxSize 100
int IsPrime(int n)
{
if (n < 2)
return 0;
int i;
for (i = 2; i <= sqrt(n); ++i)
{
if (n%i == 0)
return 0;
}
return 1;
}
int IsEqual(int n)
{
int i, j;
for (i = 2; i < n; ++i)
{
j = n - i;//将整数分解为两个部分,而不要用两个for循环
if (IsPrime(i) && IsPrime(j) && n == (i + j))
return 1;
}
return 0;
}
int GeDeiBaHe()
{
int i;
for (i = 4; i <= 2000; i += 2)
{
if (!IsEqual(i))
{
printf("%d\n", i);
return 0;
}
}
return 1;
}
int main()
{
printf("%d", GeDeiBaHe());
return 0;
}