c语言验证歌德巴郝猜想任意一个大于等于4的偶数可写成两个素数之和;任意一个大于等于7的奇数可写成三个素数之和。 1编写函数IsPrime判断整数n是否为素数; 2编写函数DreamEven对于一个大于等于4的偶数n寻找两个素数a和b使得a+b=n并输出所有等式。 3编写函数DreamOdd对于一个大于等于7的奇数n寻找三个素数a、b和c使得a+b+c=n并输出所有等式。 4编写函数main输入一个
(1)函数IsPrime的代码如下:
int IsPrime(int n) { int i; if (n <= 1) // 1不是素数 return 0; for (i = 2; i*i <= n; i++) if (n % i == 0) return 0; return 1; }
(2)函数DreamEven的代码如下:
void DreamEven(int n) { int a, b; if (n % 2 != 0 || n < 4) return; // 输入错误 for (a = 2; a <= n/2; a++) // 枚举a { b = n - a; // 计算b if (IsPrime(a) && IsPrime(b)) // 判断a和b是否都是素数 printf("%d = %d + %d\n", n, a, b); // 输出等式 } }
(3)函数DreamOdd的代码如下:
void DreamOdd(int n) { int a, b, c; if (n % 2 == 0 || n < 7) return; // 输入错误 for (a = 2; a <= n/3; a++) // 枚举a { for (b = a+1; b <= n/2; b++) // 枚举b,从a+1开始 { c = n - a - b; // 计算c if (c <= b) // c不能小于b,避免重复 break; if (IsPrime(a) && IsPrime(b) && IsPrime(c)) // 判断a、b、c是否都是素数 printf("%d = %d + %d + %d\n", n, a, b, c); // 输出等式 } } }
(4)函数main的代码如下:
int main() { int n; printf("请输入一个整数:"); scanf("%d", &n); if (n >= 4 && n % 2 == 0) // 大于等于4的偶数 DreamEven(n); else if (n >= 7 && n % 2 == 1) // 大于等于7的奇数 DreamOdd(n); else // 输入错误 printf("输入错误\n"); return 0;
原文地址: https://www.cveoy.top/t/topic/ecrk 著作权归作者所有。请勿转载和采集!