博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
求两个数的最大公约数
阅读量:4116 次
发布时间:2019-05-25

本文共 1241 字,大约阅读时间需要 4 分钟。

一.比较两个数中最小数,用x,y分别除以小于等于最小数的数,直到结果为0,这个数就是最大公约数。

#include
#include
int main(){ int x = 12, y = 16; int min = x > y ? y : x; //条件运算符:x>y成立,min=y,否则min=x. while (min >= 1) { if (x%min == 0 && y%min == 0) { printf("%d\n", min); break; } min--; } system("pause"); return 0;}

二.辗转相减法:将两数相减 (大数减去小数)求差,如果差与小数不等,再以大数减去小数求差,直到出 现两数相等为止。那么相等的数,就是所求的两个数的最大公约数。例如:求(792, 594)……表示792, 594的最大公约数。(792, 594) = (792-594, 594)=(198, 594) = (198, 594—198)=(198, 396) = (198, 396—198)=(198, 198),所以792, 594的最大公约数就是198。程序如下:

 

#include<stdio.h> #include<windows.h> int main() { int x = 792; int y = 594; while (1) { if (x > y) { x -= y; } else if (y > x) { y -= x; } else { break; } } printf("%d\n", x); system("pause"); return 0; }

在while中使用break语句,用于永久终止循环,在执行完break语句后,将执行循环结束后应该执行的那条语句。

三.辗转相除法:设两数为a、b(a>b),求a和b最大公约数(a,b)的步骤如下:用a除以b,得a÷b=q,,,r(0≤r)。若r=0,则(a,b)=b;若r≠0,则再用b除以r,得b÷r=q,,,r(0≤r).若r=0,则(a,b)=r,若r≠0,则继续用r除以r,如此下去,直到能整除为止。其最后一个余数为0的除数即为(a, b)最大公约数。例:792/594=1,,,198,594/198=3,,,0,则其最大公约数为198.

#include
#include
int main(){ int x = 792; int y = 594; while (x*y!=0) { if (x > y) { x %= y; } else { y %= x; } } int d = x == 0 ? y : x; printf("%d\n", d); system("pause"); return 0;}

你可能感兴趣的文章
day-22 mysql_SQL 结构化查询语言
查看>>
MySQL关键字的些许问题
查看>>
浅谈HTML
查看>>
css基础
查看>>
HTML&CSS进阶
查看>>
Servlet进阶和JSP基础
查看>>
servlet中的cookie和session
查看>>
过滤器及JSP九大隐式对象
查看>>
软件(项目)的分层
查看>>
菜单树
查看>>
MySQL-分布式架构-MyCAT
查看>>
设计模式六大原则(6):开闭原则
查看>>
阿里面试总结--JAVA
查看>>
Servlet的生命周期
查看>>
JAVA八大经典书籍,你看过几本?
查看>>
《读书笔记》—–书单推荐
查看>>
【设计模式】—-(2)工厂方法模式(创建型)
查看>>
有return的情况下try catch finally的执行顺序(最有说服力的总结)
查看>>
String s1 = new String("abc"); String s2 = ("abc");
查看>>
JAVA数据类型
查看>>