本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于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))相关推荐

  1. 习题6-5 使用函数验证哥德巴赫猜想 (20 分)

    本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和.素数就是只能被1和自身整除的正整数.注意:1不是素数,2是素数. 函数接口定义: in ...

  2. 6-1 使用函数验证哥德巴赫猜想 (20 分)

    本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和.素数就是只能被1和自身整除的正整数.注意:1不是素数,2是素数. 函数接口定义: in ...

  3. PTA-使用函数验证哥德巴赫猜想

    6-9 使用函数验证哥德巴赫猜想 (20分) 要变得更强. 本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和.素数就是只能被1和自身整除 ...

  4. c++写一个函数验证哥德巴赫猜想

    #include <iostream> using namespace std; //写一个函数验证哥德巴赫猜想 int main() {void godbaha(int n);int x ...

  5. 使用函数验证哥德巴赫猜想:任何一个不小于 6 的偶数均可表示为两个奇素数之和

    文章目录 引入 分析 代码 运行测试 引入 使用函数验证哥德巴赫猜想:任何一个不小于 6 的偶数均可表示为两个奇素数之和.例 如 6=3+3,8=3+5,-,18=5+13.将 6-100 之间的偶数 ...

  6. 借用该函数验证哥德巴赫猜想:任意一个大的偶数都可以分解成两个素数之和。

    定义一个函数,实现判断某个整数是否是素数.借用该函数验证哥德巴赫猜想:任意一个大的偶数都可以分解成两个素数之和.从键盘输入一个偶数,输出该偶数的两个素数之和. 代码段: #include <io ...

  7. (c语言)使用函数验证哥德巴赫猜想

    题目描述 本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和.素数就是只能被1和自身整除的正整数. 输入两个正整数m和n(0<=m& ...

  8. 实验4-2-3 pta验证“哥德巴赫猜想” (20分)

    验证"哥德巴赫猜想" (20分) 数学领域著名的"哥德巴赫猜想"的大致意思是:任何一个大于2的偶数总能表示为两个素数之和.比如:24=5+19,其中5和19都是 ...

  9. 7-7 验证“哥德巴赫猜想” (20 分)

    7-7 验证"哥德巴赫猜想" (20 分) 数学领域著名的"哥德巴赫猜想"的大致意思是:任何一个大于2的偶数总能表示为两个素数之和.比如:24=5+19,其中5 ...

最新文章

  1. 框架和库有什么区别? [关闭]
  2. javaBean 转json指定key-value个数
  3. linux下安装php扩展模块gettext
  4. OpenCASCADE:Modeling Data之二维几何
  5. 商家 APP 如何接入新版支付宝支付,老版本商家如何升级
  6. 今天心情好,一起探讨下《送给大家的200兆SVN代码服务器》怎么管理我们的VS代码?...
  7. SQL DATACOMPARE 实现两个数据库的同步处理.
  8. 编写可执行程序,其它程序调用,并返回数据,C#
  9. l298n电机哪一端为正_L298N是如何控制直流电机正反转的
  10. Java根据关键字在PDF/Word插入图片
  11. this()在java中什么意思?
  12. 编译原理之确定有限自动机的最小化
  13. amd cpu排行_2020英特尔cpu排行_2019 cpu天梯图 intel和amd cpu性能排行
  14. java导出word表格 行列合并
  15. UML图解简单工厂模式工厂方法模式抽象工厂模式区别
  16. 数据可视化之绘制世界人口地图
  17. 电脑一点,让你的电脑一点都不卡(2)
  18. 程序设计思维模测 - M4
  19. 2022年7月份模拟考题-附加题解答
  20. csdn下载积分兑换网址

热门文章

  1. MiniFly微型四轴学习与开发日志(三)
  2. parametrize参数化中使用skip标记
  3. 2023前端大厂面试题之JavaScript篇(4)
  4. 如何查询SCI和EI检索号
  5. ei指什么_什么是ei和ei检索是什么意思
  6. Unity 3D光源-Point Light点光源详解/灯泡、模拟灯光效果教程
  7. DNS与ARP的关系与原理解析
  8. 5.1 OpenStack
  9. Excel如何实现两个工作表数据的对比
  10. 拼多多发布“双打行动”说明:已下架商品近430万件