有理数分解-数论

题目描述 Description

  任何一个[0,1]中的有理数p/q(p、q均为自然数)一定可以分解成1/r1+1/r2+1/r3+…+1/rk,且r1<r2<r3<…<rk。当然这样的分解不是唯一的,如5/6=1/2+1/3=1/2+1/5+1/8+1/120,第一个分解式中的第二项比第二个分解式中的第二项大,因此我们可以定义第一个分解式比第二个分解式大。

  程序要求找出p/q的最大分解式。

 输入输出格式 Input/output
输入格式:
键盘输入p、q,1≤p≤q≤50
输出格式:
从小到大依次输出分解式中的每个分母,一行输出一个数
 输入输出样例 Sample input/output
样例测试点#1

输入样例:

5 6
输出样例:

2 3

思路:

假设1/r是能从p/q中分解出来的最大分子为1的真分数,则1/r≤p/q<1/(r-1)①

又因为p/q-1/r=(p×r-q)/(q×r)②

根据①可知,p×(r-1)<q,所以p×r-p<q,代入②中可看出,每次待分解的分数的分子一定单调下降,所以就可以用单精度除法(高精度除以普通整数)解决本题。

注意:在输入p、q后要对分数进行化简。

 

代码如下:

 1 #include <stdio.h>
 2 int gcd(int a,int b)//求最大公约数
 3 {
 4     int r=a%b;
 5     while(r>0)
 6     {
 7         a=b;
 8         b=r;
 9         r=a%b;
10     }
11     return b;
12 }
13 int main()
14 {
15     int p,q;
16     int cm;//当前最大公约数 
17     int r;
18     scanf("%d%d",&p,&q);
19     while(p>0)
20     {
21         cm=gcd(p,q);
22         if(cm>0)
23         {
24             /*===========*///化简分数 
25             p=p/cm;
26             q=q/cm;
27             /*===========*/
28         }
29         if((q%p)>0)//如果不能分解为最终的1/rk 
30         {
31             r=q/p+1;
32         }
33         else
34         {
35             r=q/p;
36         }
37         printf("%d\n",r);
38         p=p*r-q;//减掉 
39         q=q*r;
40     }
41     return 0;
42 }

 

转载于:https://www.cnblogs.com/geek-007/p/6287397.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/270157.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring系列(四):@Scope注解用法介绍

今天给大家分享Spring中Scope注解的用法&#xff0c;希望对大家能有所帮助&#xff01; Scope 定义以及作用 Scope注解主要作用是调节Ioc容器中的作用域&#xff0c;在Spring IoC容器中主要有以下五种作用域&#xff1a;基本作用域&#xff1a;singleton&#xff08;单例&#…

笔记整理——linux程序设计

数据库 (2013/2/27 16:07:11) 线程 (2013/2/27 15:47:51) 信号 (2013/2/27 15:31:28) 消息队列、共享内存 (2013/2/26 21:52:43) 管道、命名管道 (2013/2/26 21:24:39) 返回一个指向原文件所指向的地址&#xff0c;即两个文件描述符指向同一个文件。进程 (2013/2/26 20:37:25) …

电脑技巧:如何实现电脑一键自动关机和重启?

目录 1、一键关机 2、一键重启 今天小编给大家分享如何实现电脑一键自动关机和重启&#xff0c;感兴趣的朋友可以尝试一下&#xff01; 1、一键关机 首先我们在电脑桌面空白地方点右键&#xff0c;在弹出的属性栏里面找到新建&#xff0c; 在新建下面我们找到文本文档点击它&am…

手机知识:手机OTG知识介绍,看完你就懂了

现在很多的智能手机都自带OTG功能。估计很多朋友很少知道这个OTG功能是什么&#xff0c;究竟有什么用&#xff1f;其实OTG的实用功能还是很多的&#xff0c;今天小编给大家科普一下手机的OTG功能&#xff0c;感兴趣的朋友可以拿起自己的手机试一试&#xff01; 1、手机OTG概念介…

Linux常用的20条运维命令

目录 1、 删除0字节文件 2、 查看进程按内存从大到小排序 3、查看磁盘和分区信息 4、 打开文件数目&#xff1a;检查打开文件总数是否过多 5、 查看网络信息 6、 核心日志&#xff1a;检查是否有异常错误记录 7、 系统日志&#xff1a;检查是否有异常错误记录 8、查看服务 9、 …

操作系统的发展

1:无操作系统 2:单道批处理系统 3:多道程序系统 4:微机操作系统 5&#xff1a;实时操作系统

电脑技巧:如何彻底关闭电脑右下角闪烁弹窗广告

我们经常在使用电脑或者玩游戏的时候&#xff0c;经常会有一些广告弹窗的骚扰&#xff0c;这让我们使用很不爽。那么出现Win10电脑右下角闪烁弹窗广告怎么办&#xff1f;今天小编给大家介绍一下&#xff0c;如何彻底关闭这些令人讨厌的弹窗广告&#xff0c;还大家一个干净的上网…

批处理系统和分时系统和事实系统的特点

一&#xff1a;单道批处理系统特点 1:自动性 2:顺序性 3&#xff1a;单道性 二&#xff1a;多道批处理系统的特点 1:多道性 2:无序性 三&#xff1a;分时系统的特点 四&#xff1a;实时系统的特点 1:多路性 2:独立性 3&#xff1a;及时性 4&#xff1a;交互性 5:可靠性 操…

网络知识:路由器不关闭这个功能,视频越刷越卡

大家是否发现&#xff0c;长时间在刷视频&#xff0c;网速好似会越来越慢呢&#xff1f;经常需要加载一下才能正常播放。或许我们知道这可能是路由器发热&#xff0c;才出现了小问题&#xff0c;当然这可能是一部分因素&#xff0c;但其他影响因素你知道吗&#xff1f; 不知道大…

Spring系列(五):@Lazy懒加载注解用法介绍

目录 1、Lazy 懒加载注解的概念 2、Lazy 懒加载注解作用 3、Lazy 懒加载注解使用示例 3.1 新建配置类TestLazyConfig.java 3.2 新建测试类 TestLazy.java 今天给大家介绍Lazy懒加载注解用法&#xff0c;希望对大家能有所帮助&#xff01; 1、Lazy 懒加载注解的概念 SpringIoC容…

内存管理

一&#xff1a;内存管理 1:内存分配 2:内存保护 3:地址映射 4:内存扩充

网络知识:视频监控传输带宽与存储容量的计算方法

目录 一、网络传输的几个概念 二、传输宽带计算公式 2.1&#xff0c;网络带宽大小比特率大小监控数量 2.2&#xff0c;具体监控摄像机端的比特率&#xff08;每种品牌摄像机略有差异&#xff09; 2.3&#xff0c;监控中心所需要带宽 2.4&#xff0c;存储空间容量计算 监控视频系…

Spring系列(六):@Conditional注解用法介绍

目录 1、Conditional注解介绍 2、Conditional的源码内容如下&#xff1a; 3、用法示例 3.1 新建Book.java 文件 3.2 CNCondition.java 文件 3.3 ZHCondition.java 文件 3.4 新建TestConditionalConfig.java 配置文件 3.5 新建TestConditional.java 测试文件 4、Conditional应用…

手机知识:手机蓝牙有6个使用场景,你都知道吗?

估计很多人都没有深入的了解蓝牙的功能&#xff0c;蓝牙的有些功能强大到不可思议。 1. 连接蓝牙耳机 随着3.5mm的耳机孔被很多机型取消以后&#xff0c;不少用户都只能选择使用蓝牙耳机或者转换器。 那么这时候蓝牙功能就发挥了很大的用处&#xff0c;现在多数人都会选择使用A…

电脑知识:如何保养自己的电脑,看完你就懂了

目录 一、环境对电脑寿命的影响是不可忽视的。 二、良好的个人使用习惯对电脑的影响也很大 2.1 建议正确地执行开机和关机顺序 2.1.1 开机的顺序 2.1.2 关机顺序 2.2 电脑维护要注意以下几点 2.2.1&#xff0e;保持安置电脑的房间干燥和清洁 2.2.2&#xff0e;正确开机&#xf…

提供用户接口

1:命令接口 2:图形用户接口 3:程序接口

硬件知识:SSD越用越慢的原因,看完你就懂了

从机械硬盘到SSD硬盘的升级&#xff0c;让无数PC用户感受到什么叫“丝滑流畅”。然而&#xff0c;使用一段时间以后&#xff0c;总会感到你的SSD有如下变化&#xff1a; 同样使用环境下&#xff0c;同款测试软件测得的磁盘性能降低&#xff1b;磁盘写入速度出现大起大落的速度波…