计算一个数是否可为两个素数之和
问题描述:
计算一个数是否可为两个素数之和
34 = 3 + 31
34 = 5 + 29
34 = 11 + 23
34 = 17 + 17
代码实现:
void fun(int n)
{
int flag[2] = {1,1};
int p1 = 2;
int p2 = n - p1;
for (; p1 <= n - 2&&p1<=p2; p1++,p2=n-p1) { // p1从2到n-2取数1
for (int i = 2; i <= p1 / 2; i++) { // 判断p1是否为素数
if (p1 % i == 0) { // p1不是素数
flag[0] = 0;
break;
}
}
if (flag[0]) { // 当p1为素数时,判断p2是否为素数
for (int i = 2; i <= p2 / 2; i++) {
if (p2 % i == 0) { // p2不是素数
flag[1] = 0;
break;
}
}
}
if (flag[0] && flag[1]) { // p1与p2均为素数
printf("%d+%d=%d\n", p1, p2, n);
}
flag[0] = flag[1] = 1; // 一轮结束后进行复位
}
}