C语言入门基础_验证哥德巴赫猜想
哥德巴赫猜想:任何一个大于6的偶数,都由两个素数相加组成
一、程序设计思路:
任意输入一个大于6的偶数,打印出组成它的两个素数。
例如输入偶数n,使n = i + j,i与j均为素数。
可利用穷举法查找i与j的值,因为n从6开始,故i可以从3开始尝试(因为1不是素数,若i=2且n是大于6的偶数,则j必定不是素数),判断i是否为素数,若i是素数则判断j(可求出j=n-i)是否为素数,若成立则返回结果,若不成立则i+=2继续查找下一个素数(因为i=3开始,故以2为步长取值令i+=2可以更快找出i的值)
二、准备过程
想要实现此代码,首先需要知道如何判断一个数是否为素数。
判断素数:对于一个整数k,如果k不能被2到根号k之间的所有整数除尽,则k是素数
sqrt() 是开根号函数
#include <math.h>
int main()
{printf("请输入一个整数:");int k = 0, flag = 1;scanf("%d", &k);for (int i = 2; i <= sqrt(k); i++){if (k % i == 0){flag = 0;break;}}if (flag == 1)printf("%d是素数", k);elseprintf("%d不是素数", k);return 0;
}
代码解析:上述代码中,输入整数k,定义flag为1,i为2。如果k除i没有余数即k对i取模为0,那么flag=0并结束for循环,k不是素数。如果k除i有余数即k对i取模不为0,那么i++,i=3,继续判断k对i取模是否为0,直至i不满足for循环条件i <= sqrt(k),若此时flag依旧是1,则k是素数。
三、代码实现-验证哥德巴赫猜想
#include <math.h>
int main()
{int n, i, j, m, k;
loop1:printf("请输入一个大于6的偶数:");scanf("%d", &n);if (n >= 6 && n%2==0) {for (i = 3; i <= n / 2; i+=2) {int flag1 = 1;for (j = 2; j <= sqrt(i) + 1; j++) {if (i % j == 0){flag1 = 0;break;}}if (flag1 == 1) {m = n - i;int flag2 = 1;for (k = 2; k <= sqrt(m); k++)if (m % k == 0){flag2 = 0;break;}if (flag2 == 1){printf("偶数%d由素数%d和素数%d组成。", n, i, m);break;}}}}else{printf("请输入合法数字!\n");goto loop1;}
}
运行结果:
C语言入门基础_验证哥德巴赫猜想相关推荐
- python基础知识验证哥德巴赫猜想
哥德巴赫猜想: 任何大于2的偶数都能够写成两个质数相加的形式. 验证思路: 编写哥德巴赫分解程序,输入一个数,输出他的两个子质数,如果找不到,返回False.遍历整数,查看是否有False的情况,如果 ...
- (C语言)验证哥德巴赫猜想,输入一个大于6的偶数,输出这个数能被分解为哪两个质数的和
(C语言)验证哥德巴赫猜想,输入一个大于6的偶数,输出这个数能被分解为哪两个质数的和,如10=3+7,12+5+7. // 质数:除了1和自身,不能被任何数整除的数 #include<stdio ...
- c语言任何一个大于6的偶数均可表示为两个素数之和,C语言:验证哥德巴赫猜想:任何一个大于6的偶数均可表示为2个素数之和...
题目: C语言:验证哥德巴赫猜想:任何一个大于6的偶数均可表示为2个素数之和 [问题描述] 验证哥德巴赫猜想:任何一个大于6的偶数均可表示为2个素数之和。例如6=3+3,8=3+5,-,18=5+13 ...
- 【C语言】验证哥德巴赫猜想:任何一个大于2的偶数均可表示成为两个素数之和。
[C语言]验证哥德巴赫猜想:任何一个大于2的偶数均可表示成为两个素数之和. 例如:4=2+2,6=3+3,8=3+5- 要求:将6-100之间的偶数都表示为两个素数之和,输出时一行5组.若有多组结果满 ...
- C语言验证哥德巴赫猜想
验证哥德巴赫猜想: 任何一个大于6的偶数都可以表示成两个素数之和.程序功能:输入一个大于2的偶数,输出该偶数的两个素数加和算式. 如 请输入一个偶数:10 10=3+7=5+5 /*哥德巴赫猜想*/ ...
- (c语言)使用函数验证哥德巴赫猜想
题目描述 本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和.素数就是只能被1和自身整除的正整数. 输入两个正整数m和n(0<=m& ...
- 【算法】验证哥德巴赫猜想
问题来源 Timus Online Judge 网站上有这么一道题目:1356. Something Easier.这道题目的输入是一组 2 到 109 之间整数,对于每个输入的整数,要求用最少个数 ...
- c语言3到7位水仙花数流程图_C语言入门基础整理
学习计算机技术,C语言可以说是必备的,他已经成为现在计算机行业人学习必备的,而且应用也是十分的广泛,今天就来看看拥有几年c语言工作经验的大神整理的C语言入门基础知识,没有学不会,只有不肯学. 结构化程 ...
- C语言入门基础知识有哪些?
众所周知C语言经久不衰,并且很多人都想要成为C语言工程师,为了能够做好C语言技术学习,需要知晓C语言入门基础知识有哪些. 用一个简单的C程序例子,介绍C语言的基本构成.格式.以及良好的书写风格,使小伙 ...
最新文章
- webgl 游戏_30个令人惊叹的WebGL示例和演示
- c++ boost库
- Javascript面向对象编程(一):封装
- PM——视屏操作软件
- Object之defineProperty
- jzoj6275-[NOIP提高组模拟1]小L的数列【矩阵乘法,欧拉定理】
- c oracle 记录,ORACLE 19c 操作相关记录
- Django模型关系
- HTML5 文本元素
- python中shift函数rolling_Pandas Shift函数的基础入门学习笔记
- eclipse注释模板与代码规范导入例子及配置文件
- CF 766C - Mahmoud and a Message (DP+字符串)
- ueditor接入秀米编辑器
- Reviewboard使用介绍
- python qq群发消息_Python版QQ群发消息
- macos安装盘第三方工具制作_简单制作 Mac OS X USB 启动盘的方法教程
- Qt自带示例演示程序
- DIV根据里面文字自动撑开
- 微服务与宏服务?故事线-基本概念(理解)
- WPF的本地化思路提示:直接汉化BAML
热门文章
- oracle rfs进程过多,【DB笔试面试755】在Oracle的DG中,RFS、LNSn、MRP、LSP进程的作用分别是什么?...
- MATLAB处理矩阵的一些命令
- UOS将字体制作成软件包,可双击安装
- Linux的软件包封装格式有,RED HAT LINUX所提供的安装软件包,默认的打包格式为( )。...
- 找字符串中最长单词C语言,C语言 在已知字符串中找最长单词
- div+css实现圆角阴影效果
- GFW 三定律,太有创意了,太真实了,胆太大,竟敢光天化日下说实话!
- 设计模式与软件体系结构复习资料——设计模式
- java时间戳 时间格式转换与时差
- 008.环形链表 II-双指针