c语言经典题算法1--用辗转相除法求两个数的最大公约数

来源:互联网 发布:山东临沂外包淘宝客服 编辑:程序博客网 时间:2024/05/16 07:39

题目: 用辗转相除法求两个数的最大公约数

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int main(){    int a, b,r;    scanf("%d %d", &a, &b);    while (b != 0)//当其中一个数为0,另一个数就是两数的最大公约数    {        r = a%b;        a = b;        b = r;    }    printf("最大公约数%d\n", a);    system("pause");}

辗转相除法:
目的:求两个整数的最大公约数
最大公约数:能同时被两个整数整除的最大公约数
原理:
最大公约数 = 小数 与 (大数%小数) 的最大公约数

利用这条原理,反复执行,直到   大数%小数 = 0,此时较小的数就是原来两数的最大公约数

例子:
105 252
252 % 105 = 42;
105 % 42 = 21;
42 % 21 = 0;
——即21为105与252的最大公约数
这种算法比起用接连的数不断循环找出最大公约数,会节省很多步骤,可以大大加快代码的执行速度

使用软件:vs2013
运行结果:
这里写图片描述

阅读全文
0 0