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

相关文章

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

使用C语言实现交换整数的奇数位和偶数位

《使用C语言实现交换整数的奇数位和偶数位》在C语言中,要交换一个整数的二进制位中的奇数位和偶数位,重点需要理解位操作,当我们谈论二进制位的奇数位和偶数位时,我们是指从右到左数的位置,本文给大家介绍了使... 目录一、问题描述二、解决思路三、函数实现四、宏实现五、总结一、问题描述使用C语言代码实现:将一个整

java两个List的交集,并集方式

《java两个List的交集,并集方式》文章主要介绍了Java中两个List的交集和并集的处理方法,推荐使用Apache的CollectionUtils工具类,因为它简单且不会改变原有集合,同时,文章... 目录Java两个List的交集,并集方法一方法二方法三总结java两个List的交集,并集方法一

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.

查询Oracle数据库表是否被锁的实现方式

《查询Oracle数据库表是否被锁的实现方式》本文介绍了查询Oracle数据库表是否被锁的方法,包括查询锁表的会话、人员信息,根据object_id查询表名,以及根据会话ID查询和停止本地进程,同时,... 目录查询oracle数据库表是否被锁1、查询锁表的会话、人员等信息2、根据 object_id查询被