判断是否是最简分数(既约分数)(辗转相除法)(暴力枚举)
判断一个分数是否为既约分数的算法(既约分数是指 分数的分子和分母的最大公约数是1 ,也称为最简分数)
最简分数,是分子、分母只有公因数1的分数,或者说分子和分母互质的分数,又称既约分数
以下为2段代码,第一段是我一开始自己写的,第二段是网上看到的运用的数学家欧里几得的辗转相除法,第二段代码建议读者背诵。它设计的很灵活,第一段代码简明易懂,但在计数较大数值时花费时间较长,第二段代码可以快速计算和判断。
(暴力枚举法)
#include<stdio.h>
//判断一个分数是否为既约分数的算法(既约分数是指 分数的分子和分母的最大公约数是1 ,也称为最简分数)
//最简分数,是分子、分母只有公因数1的分数,或者说分子和分母互质的分数,又称既约分数 int gcd(int a,int b)
{int i,flat=0,n;(a>b)?(n=b):(n=a);for(i=2;i<=n;i++){if(a%i==0&&b%i==0){ flat=1; break;}}return flat;}
int main()
{// a/b a为分子,b为分母; int a,b;scanf("%d%d",&a,&b);if(gcd(a,b)==0)printf("yes\n");else printf("no\n") ;}
(辗转相除法)
#include<stdio.h>
//判断一个分数是否为既约分数(既约分数是指 分数的分子和分母的最大公约数是1 ,也称为最简分数)
//最简分数,是分子、分母只有公因数1的分数,或者说分子和分母互质的分数,又称既约分数 //在数学中,辗转相除法,又称欧几里得算法(英语:Euclidean algorithm)
//是求最大公约数的算法。辗转相除法首次出现于欧几里得的《几何原本》(第VII卷,命题i和ii)中
//而在中国则可以追溯至东汉出现的《九章算术》//核心
//两个整数的最大公约数是能够同时整除它们的最大的正整数。
//辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。
//例如,252和105的最大公约数是21
//252-105=147 147是两个数的差,147和105的最大公约数是21
int gcd(int a,int b)
{if(a%b==0)return b;elsereturn gcd(b,a%b);
}
int main()
{// a/b a为分子,b为分母; int a,b;scanf("%d%d",&a,&b);if(gcd(a,b)==1)//如果 b(指在gcd函数中 b,是除数,也是最大公约数) 为1printf("yes\n");else printf("no\n") ;}
这个是我自己根据辗转相除法设计的计算2个数最大公约数的算法代码
//辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。
#include<stdio.h>
int main()
{int a,b,n,t;scanf("%d%d",&a,&b);if(a<b)//确保输入的2个数 a是大的 b是小的 {t=b;b=a;a=t;}if(a%b==0)//a为被求余数,b为除数,如果求余为0,则除数b为最大公约数 ;else while(a%b!=0)//否则使用辗转相除法 求余的数一定是比b小的//重新交换位置,把余数赋给b,把b赋给a {t=b;b=a%b;a=t;}printf("最大公约数是:%d",b);//除数是最大公约数 }
判断是否是最简分数(既约分数)(辗转相除法)(暴力枚举)相关推荐
- 【蓝桥杯】 C++ 既约分数
文章目录 题目描述 实现代码 解题思路 注意点 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 如果一个分数的分子和分母的最大公约数是 1,这个分数称为既约分数. ...
- 既约分数 欧几里得算法/辗转相除法
欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数.计算公式gcd(a,b) = gcd(b,a % b). public class count { public sta ...
- 辗转相除法(既约分数)
(12,8)->(8,4)->(4,0) (12,7)->(7,5)->(5,2)->(2,1)->(1,0) 一般用来求两个数的最大公约数 本题为填空题,只需要算 ...
- 蓝桥杯——既约分数(c语言)
目录 一.题目描述 二.思路分析 1.分析题意: 2.解题思路: 三.算法实现 四.算法改进 一.题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 如果一个分数的分子 ...
- 2020年蓝桥杯省赛题目——既约分数
题目:如果一个分数的分子和分母的最大公约数是 1,这个分数称为既约分数. 例如4/3,8/1,1/7, 都是既约分数. 请问(分子和分母都是 1 到 2020 之间的整数)有多少个既约分数?(包 ...
- 蓝桥杯_既约分数_java
既约分数 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 如果一个分数的分子和分母的最大公约数是 1,这个分数称为既约分数. 例如3/4 ,1/8 ,7/1 , 都 ...
- 既约分数(python)
题目描述 如果一个分数的分子和分母的最大公约数是1,这个分数称为既约分数.例如,3/4,5/2,1/8,7/1都是既约分数.请问,有多少个既约分数,分子和分母都是1到2020之间的整数(包括1和202 ...
- 2020年蓝桥杯Java A组 B题 既约分数
题目 [描述] 如果一个分数的分子和分母的最大公约数是1,这个分数称为既约分数.例如,3/4 , 5/2 , 1/8 , 7/1都是既约分数.请问,有多少个既约分数,分子和分母都是1 到2020 之间 ...
- 2020年第十一届蓝桥杯 - 省赛 - CC++大学A组 - B.既约分数
2020年第十一届蓝桥杯-省赛-C&C++大学A组-B.既约分数 Ideas 这题就是简单的暴力枚举,把分子和分母都从1枚举到2020,然后判断分子和分母的的最大公约数是不是1就OK了. 计算 ...
最新文章
- Nginx+Tomcat 负载均衡集群方案
- 每日记载内容总结44
- ArcGIS Server开发示例诠释
- php关闭warning
- 23种设计模式C++源码与UML实现--策略模式
- php调用root权限,PHP执行root权限程序
- Zookeeper的概述
- Linux的SOCKET编程 简单演示
- 文件CRC和MD5校验
- 内存条和SSD都要涨价了!日韩贸易战将引起NAND与DRAM双涨效应
- 【数据库系统设计】关系数据库标准语言SQL(1)
- 南开大学开源新图像分割算法,刷新精度记录 | 资源
- Linux性能及调优指南(翻译)
- 用JavaScript校验日期的合法性
- CountDownLatch 多线程使用示例
- mac 系统搭建web服务器,MAC OS 如何搭建本地webserver
- 拆机清灰重装系统数据恢复——心得汇总
- win10本地策略组脚本
- Mixly(米思齐)for Mac 2.0 安装遇到的一些问题
- 清除各个浏览器保存的账号密码信息