C语言验证哥德巴赫猜想

哥德巴赫猜想

众所周知,哥德巴赫猜想是指:

一个不小于6的偶数可以表示为两个奇素数之和。

本程序要实现的功能是对于输入的偶数n,输出所有可能的分解为两个奇素数的结果(按第一个奇素数从小到大的顺序输出)。

完整代码

本程序完整代码如下:

c 复制代码
#include <stdio.h>
#include <math.h>

int prime(unsigned int num) {
	for (unsigned int i = 2; i <= sqrt(num); i++) {
		if (prime(i) && num % i == 0) {
			return 0;
		}
	}
	return 1;
}

int main() {
	unsigned int n, k;
	
	scanf("%d", &n);
	
	for (unsigned int j = 3; j <= n / 2; j += 2) {
		k = n - j;
		if (prime(j) && prime(k)) {
			printf("%d=%d+%d\n", n, j, k);
		}
	}
	
	return 0;
}

代码解释

prime函数

c 复制代码
int prime(unsigned int num) {
	for (unsigned int i = 2; i <= sqrt(num); i++) {
		if (prime(i) && num % i == 0) {
			return 0;
		}
	}
	return 1;
}

prime函数的作用是判断正整数num是否为素数。判断素数的方法是遍历从2到√n之间的所有素数,若均不是num的素因数,则num是素数,否则不是素数。若num有大于√n的素因数k,则必有素因数num/k<√n,因此只需遍历2到√n即可。这里,用到了一次函数迭代。

主函数

c 复制代码
int main() {
	unsigned int n, k;
	
	scanf("%d", &n);
	
	for (unsigned int j = 3; j <= n / 2; j += 2) {
		k = n - j;
		if (prime(j) && prime(k)) {
			printf("%d=%d+%d\n", n, j, k);
		}
	}
	
	return 0;
}

首先用户输入正整数n,再对从3(正数范围内最小的奇素数)到n/2范围内的所有奇数讨论是否满足题意,若满足,直接打印。

运行结果示例

以200为例:

相关推荐
WWZZ20251 分钟前
快速上手大模型:深度学习5(实践:过、欠拟合)
人工智能·深度学习·神经网络·算法·机器人·大模型·具身智能
Halo_tjn7 分钟前
Set集合专项实验
java·开发语言·前端·python
席万里8 分钟前
关于Go的init函数执行顺序#黑魔法
开发语言·网络·golang
断水客9 分钟前
如何在手机上搭建Linux学习环境
linux·运维·学习
司铭鸿25 分钟前
图论中的协同寻径:如何找到最小带权子图实现双源共达?
linux·前端·数据结构·数据库·算法·图论
橘子真甜~34 分钟前
C/C++ Linux网络编程6 - poll解决客户端并发连接问题
服务器·c语言·开发语言·网络·c++·poll
9***Y481 小时前
Java开发工具IntelliJ IDEA技巧
java·开发语言·intellij-idea
码力码力我爱你1 小时前
C++性能基准测试
开发语言·c++
张人玉1 小时前
C#WPF——MVVM框架编写管理系统所遇到的问题
开发语言·c#·wpf·mvvm框架
j***12151 小时前
网络爬虫学习:应用selenium获取Edge浏览器版本号,自动下载对应版本msedgedriver,确保Edge浏览器顺利打开。
爬虫·学习·selenium