习题6-5 使用函数验证哥德巴赫猜想 (20 point(s))
本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。
函数接口定义:
int prime( int p );
void Goldbach( int n );
其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数Goldbach按照格式“n=p+q”输出n的素数分解,其中p≤q均为素数。又因为这样的分解不唯一(例如24可以分解为5+19,还可以分解为7+17),要求必须输出所有解中p最小的解。
裁判测试程序样例:
#include <stdio.h>
#include <math.h>int prime( int p );
void Goldbach( int n );int main()
{int m, n, i, cnt;scanf("%d %d", &m, &n);if ( prime(m) != 0 ) printf("%d is a prime number\n", m);if ( m < 6 ) m = 6;if ( m%2 ) m++;cnt = 0;for( i=m; i<=n; i+=2 ) {Goldbach(i);cnt++;if ( cnt%5 ) printf(", ");else printf("\n");}return 0;
}/* 你的代码将被嵌在这里 */
输入样例:
89 100
输出样例:
89 is a prime number
90=7+83, 92=3+89, 94=5+89, 96=7+89, 98=19+79
100=3+97,
题解:
int prime( int p )
{ //参数p为素数时返回1,否则返回0int i;int flag = 1;for (i = 2; i <= sqrt(p); i++) //详情见下面 {if (p % i == 0){flag = 0;break;}}if (flag == 1 && p != 1) return 1; //注意这里需要加一个条件 p 不等于 1 ,因为 1 不是素数 else return 0;
}
void Goldbach( int n )
{ //按照格式“n=p+q”输出n的素数分解,其中p≤q均为素数.要求必须输出所有解中p最小的解int i; //循环变量 int j = 3; //分解的第一个素数 ,初值为 3 ,因为题目要求分解的数必须是素数 int flag = 1; //中介,用于判断是否是素数 int temp1 = 0, temp2 = 0; //用于存放 n 分解出来的两个素数while ((temp1 + temp2) != n) //当temp1加temp2不等于n时循环 {// flag = 1; //中介赋值为1,默认我们所要判断的数是素数
// for (i = 2; i <= sqrt(j); i++) //判断素数
// {// if (j % i == 0)
// {// flag = 0;
// break;
// }
// }
// if (flag == 1) temp1 = j; //如果是素数,把第一个素数给 temp1 if (prime(j) == 1) temp1 = j;int t = n - temp1; //定义t变量,赋值为 n 减 temp1(因为其他的数,加起来不是没超过 n ,就是超过 n,减去就刚刚好) 例:87=90-3
// for (i = 2; i <= sqrt(t); i++) //判断第二个是不是素数
// {// if (t % i == 0)
// {// flag = 0;
// break;
// }
// }
// if (flag == 1) temp2 = t;if (prime(t) == 1) temp2 = t;j += 2; //每次 j 加二,因为初值为 3;题目要求分解出来的数是奇数的素数 }printf("%d=%d+%d", n, temp1, temp2); //如果两个素数都找出来了就打印
}
习题6-5 使用函数验证哥德巴赫猜想 (20 point(s))相关推荐
- 习题6-5 使用函数验证哥德巴赫猜想 (20 分)
本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和.素数就是只能被1和自身整除的正整数.注意:1不是素数,2是素数. 函数接口定义: in ...
- 6-1 使用函数验证哥德巴赫猜想 (20 分)
本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和.素数就是只能被1和自身整除的正整数.注意:1不是素数,2是素数. 函数接口定义: in ...
- PTA-使用函数验证哥德巴赫猜想
6-9 使用函数验证哥德巴赫猜想 (20分) 要变得更强. 本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和.素数就是只能被1和自身整除 ...
- c++写一个函数验证哥德巴赫猜想
#include <iostream> using namespace std; //写一个函数验证哥德巴赫猜想 int main() {void godbaha(int n);int x ...
- 使用函数验证哥德巴赫猜想:任何一个不小于 6 的偶数均可表示为两个奇素数之和
文章目录 引入 分析 代码 运行测试 引入 使用函数验证哥德巴赫猜想:任何一个不小于 6 的偶数均可表示为两个奇素数之和.例 如 6=3+3,8=3+5,-,18=5+13.将 6-100 之间的偶数 ...
- 借用该函数验证哥德巴赫猜想:任意一个大的偶数都可以分解成两个素数之和。
定义一个函数,实现判断某个整数是否是素数.借用该函数验证哥德巴赫猜想:任意一个大的偶数都可以分解成两个素数之和.从键盘输入一个偶数,输出该偶数的两个素数之和. 代码段: #include <io ...
- (c语言)使用函数验证哥德巴赫猜想
题目描述 本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和.素数就是只能被1和自身整除的正整数. 输入两个正整数m和n(0<=m& ...
- 实验4-2-3 pta验证“哥德巴赫猜想” (20分)
验证"哥德巴赫猜想" (20分) 数学领域著名的"哥德巴赫猜想"的大致意思是:任何一个大于2的偶数总能表示为两个素数之和.比如:24=5+19,其中5和19都是 ...
- 7-7 验证“哥德巴赫猜想” (20 分)
7-7 验证"哥德巴赫猜想" (20 分) 数学领域著名的"哥德巴赫猜想"的大致意思是:任何一个大于2的偶数总能表示为两个素数之和.比如:24=5+19,其中5 ...
最新文章
- 框架和库有什么区别? [关闭]
- javaBean 转json指定key-value个数
- linux下安装php扩展模块gettext
- OpenCASCADE:Modeling Data之二维几何
- 商家 APP 如何接入新版支付宝支付,老版本商家如何升级
- 今天心情好,一起探讨下《送给大家的200兆SVN代码服务器》怎么管理我们的VS代码?...
- SQL DATACOMPARE 实现两个数据库的同步处理.
- 编写可执行程序,其它程序调用,并返回数据,C#
- l298n电机哪一端为正_L298N是如何控制直流电机正反转的
- Java根据关键字在PDF/Word插入图片
- this()在java中什么意思?
- 编译原理之确定有限自动机的最小化
- amd cpu排行_2020英特尔cpu排行_2019 cpu天梯图 intel和amd cpu性能排行
- java导出word表格 行列合并
- UML图解简单工厂模式工厂方法模式抽象工厂模式区别
- 数据可视化之绘制世界人口地图
- 电脑一点,让你的电脑一点都不卡(2)
- 程序设计思维模测 - M4
- 2022年7月份模拟考题-附加题解答
- csdn下载积分兑换网址