c题目13:验证100以内的数是否满足哥德巴赫猜想。(任一大于2的偶数都可以写成两个质数之和)

本文主要是介绍c题目13:验证100以内的数是否满足哥德巴赫猜想。(任一大于2的偶数都可以写成两个质数之和),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

每日小语

活下去的诀窍是:保持愚蠢,又不能知道自己有多蠢。——王小波

自己思考

即要让第一个质数与这个数减去第一个质数的值都为质数,所以要满足几个条件

1.a+b=c

2.a为质数

3.b为质数

这里是否可以用到我之前刚学的自己设置的那个判断质数的函数呢,我觉得完全可以。

//100以内任意大于2的偶数都可写成两个质数之和
#include <stdio.h>int IsPrime(int num)//输入参数是 num,即要判断的数
{int isPrime = 1;for (int i = 2; i < num; i++) {if (num % i == 0) {isPrime = 0;break;}}return 0;
}int main()
{int num,prime;for(int i=2;i<100;i++){IsPrime(prime);IsPrime(num-prime);}if(IsPrime(prime)==1&&IsPrime(num-prime)==1) {printf("哥德巴赫猜想成立");}else{printf("不成立");}                       return 0;    
}

 敲写的过程中我不知道如何用if来判断,虽然程序没有报错,可他给的结果是“不成立”。

gpt解答疑惑

1.IsPrime函数没有正确返回结果。在该函数中,我设置了一个名为isPrime的本地变量来表示是否为质数,但在函数末尾将其值始终返回为0,所以无法正确判断是否为质数。你应该根据isPrime变量的值返回正确的结果。

int IsPrime(int num)
{int isPrime = 1;for (int i = 2; i < num; i++) {if (num % i == 0) {isPrime = 0;break;}}return isPrime;
}

return的不是0了,变成了Isprime???

gpt还是牛逼

#include <stdio.h>int IsPrime(int num)// 输入参数是 num,即要判断的数
{int isPrime = 1;for (int i = 2; i < num; i++) {if (num % i == 0) {isPrime = 0;break;}}return isPrime;
}int main()
{int num;for (int i = 4; i <= 100; i += 2) // 因为猜想是任意大于2的偶数,所以从4开始遍历偶数{num = i;int found = 0; // 用于标记是否找到了两个质数之和等于当前偶数for (int prime = 2; prime <= num / 2; prime++) // 在质数范围内搜索两个质数之和{if (IsPrime(prime) == 1 && IsPrime(num - prime) == 1) {printf("哥德巴赫猜想成立:%d = %d + %d\n", num, prime, num - prime);found = 1;break; // 找到了,则跳出内部循环}}if (found == 0){printf("不成立:%d\n", num);}}return 0;
}

之前忽视了这个应该是偶数,还初始设置了一个found=0,改变它的值来判断。

然后还是需要两个for循环来判断,这一点我还是不理解。

#include <stdio.h>int IsPrime(int num)// 输入参数是 num,即要判断的数
{int isPrime = 1;for (int i = 2; i < num; i++) {if (num % i == 0) {isPrime = 0;break;}}return isPrime;
}int main()
{int num;int found = 0; for (int i = 4; i <= 100; i += 2) {num = i;for (int prime = 2; prime <= num / 2; prime++){if (IsPrime(prime) == 1 && IsPrime(num - prime) == 1) {found = 1;break; }}}    if (found == 0){printf("不成立:%d\n", num);}else{printf("成立");}return 0;
}

以上这是精简代码。

第一个循环用来遍历 4 到 100 之间的所有偶数

第二个循环验证是否存在两个质数的和等于 `num`。

嗯,得加紧学一下两个循环了,目前还是不理解怎么运作的。

#include <stdio.h>int IsPrime(int num)// 输入参数是 num,即要判断的数
{int isPrime = 1;for (int i = 2; i < num; i++) {if (num % i == 0) {isPrime = 0;break;}}return isPrime;
}int main()
{int num;int found = 0; for (int num = 4; num <= 100; num += 2) {for (int prime = 2; prime <= num / 2; prime++){if (IsPrime(prime) == 1 && IsPrime(num - prime) == 1) {found = 1;break; }}}    if (found == 0){printf("不成立:%d\n", num);}else{printf("成立");}return 0;
}

最后为最精简代码,撒花花~

这篇关于c题目13:验证100以内的数是否满足哥德巴赫猜想。(任一大于2的偶数都可以写成两个质数之和)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/443986

相关文章

java中判断json key是否存在的几种方法

《java中判断jsonkey是否存在的几种方法》在使用Java处理JSON数据时,如何判断某一个key是否存在?本文就来介绍三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目http://www.chinasem.cn录第一种方法是使用 jsONObject 的 has 方法

Java JDK Validation 注解解析与使用方法验证

《JavaJDKValidation注解解析与使用方法验证》JakartaValidation提供了一种声明式、标准化的方式来验证Java对象,与框架无关,可以方便地集成到各种Java应用中,... 目录核心概念1. 主要注解基本约束注解其他常用注解2. 核心接口使用方法1. 基本使用添加依赖 (Maven

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl

MySQL使用EXISTS检查记录是否存在的详细过程

《MySQL使用EXISTS检查记录是否存在的详细过程》EXISTS是SQL中用于检查子查询是否返回至少一条记录的运算符,它通常用于测试是否存在满足特定条件的记录,从而在主查询中进行相应操作,本文给大... 目录基本语法示例数据库和表结构1. 使用 EXISTS 在 SELECT 语句中2. 使用 EXIS

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

MySQL 主从复制部署及验证(示例详解)

《MySQL主从复制部署及验证(示例详解)》本文介绍MySQL主从复制部署步骤及学校管理数据库创建脚本,包含表结构设计、示例数据插入和查询语句,用于验证主从同步功能,感兴趣的朋友一起看看吧... 目录mysql 主从复制部署指南部署步骤1.环境准备2. 主服务器配置3. 创建复制用户4. 获取主服务器状态5