欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 2025-03-06 学习记录--C/C++-PTA 习题6-5 使用函数验证哥德巴赫猜想

2025-03-06 学习记录--C/C++-PTA 习题6-5 使用函数验证哥德巴赫猜想

2025/6/28 5:54:25 来源:https://blog.csdn.net/weixin_48850734/article/details/146067605  浏览:    关键词:2025-03-06 学习记录--C/C++-PTA 习题6-5 使用函数验证哥德巴赫猜想

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻

一、题目描述 ⭐️

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、代码(C语言)⭐️

#include <stdio.h>
#include <math.h>// 函数声明
int prime(int p);       // 判断是否是素数
void Goldbach(int n);   // 输出 n 的哥德巴赫分解int main() {int m, n, i, cnt;// 输入两个整数 m 和 nscanf("%d %d", &m, &n);// 如果 m 是素数,输出提示if (prime(m) != 0) {printf("%d is a prime number\n", m);}// 确保 m 是大于等于 6 的偶数if (m < 6) m = 6;   // 如果 m 小于 6,设置为 6if (m % 2) m++;     // 如果 m 是奇数,加 1 变为偶数cnt = 0; // 计数器,用于控制输出格式// 遍历从 m 到 n 的所有偶数for (i = m; i <= n; i += 2) {Goldbach(i); // 输出当前偶数的哥德巴赫分解cnt++;      // 计数器加 1// 控制输出格式:每 5 个分解换行,否则用逗号分隔if (cnt % 5) {printf(", ");} else {printf("\n");}}return 0;
}/* 你的代码将被嵌在这里 */
/** 判断是否是素数:1-是 0-不是 */
int prime(int p) {// 素数要大于 1if (p <= 1) {return 0;}// 2 是素数if (p == 2) {return 1;}// 偶数(除了 2)不是素数if (p % 2 == 0) {return 0;}// 检查从 3 到 sqrt(p) 的奇数for (int i = 3; i * i <= p; i += 2) {if (p % i == 0) {return 0; // 如果能被整除,则不是素数}}// 否则是素数return 1;
}/** 按照格式“n=p+q”输出 n 的素数分解,其中 p≤q 均为素数 */
void Goldbach(int n) {// 因为素数要大于 1,所以从 2 开始遍历,寻找满足条件的素数对for (int i = 2; i < n; i++) {// 如果 i 和 n - i 都是素数,则输出分解if (prime(i) && prime(n - i)) {printf("%d=%d+%d", n, i, n - i);return; // 找到后直接返回}}
}

在这里插入图片描述

三、知识点 ⭐️

C 语言 判断是否是素数(质数)

详情请查看我的另一篇文章。
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词