【问题描述】使用函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。例如6=3+3,8=3+5... ... 将6~100(不包括100)之间的偶数都表示成两个素数之和,打印时一行打印5组。
【样例输入】无
【样例输出】
6= 3+ 3 8= 3+ 5 10= 3+ 7 12= 5+ 7 14= 3+11
16= 3+13 18= 5+13 20= 3+17 22= 3+19 24= 5+19
26= 3+23 28= 5+23 30= 7+23 32= 3+29 34= 3+31
36= 5+31 38= 7+31 40= 3+37 42= 5+37 44= 3+41
... ...
#include <stdio.h>
#include <stdbool.h>
// 函数声明
bool isPrime(int number);
void goldbachConjecture();
int main() {
// 调用验证哥德巴赫猜想的函数
goldbachConjecture();
return 0;
}
// 判断一个数是否为素数的函数
bool isPrime(int number) {
int i;
if (number < 2) {
return false; // 小于2的数不是素数
}
for ( i = 2; i * i <= number; ++i) {
if (number % i == 0) {
return false; // 能被整除,不是素数
}
}
return true; // 没有找到可以整除的因子,是素数
}
// 验证哥德巴赫猜想的函数
void goldbachConjecture() {
int count = 0; // 用于计数每行打印的组数
int evenNum;
int i;
for (evenNum = 6; evenNum < 100; evenNum += 2) {
for ( i = 3; i <= evenNum / 2; i += 2) {
if (isPrime(i) && isPrime(evenNum - i)) {
// 打印结果
printf("%2d= %2d+%2d ", evenNum, i, evenNum - i);
// 控制每行打印5组
count++;
if (count == 5) {
printf("\n");
count = 0;
}
break;
}
}
}
}