C语言求最大公约数代码

C语言求最大公约数代码题目 随机输入两个数 求其最大公约数在此展示三种常用解题思路 1 首先展示第一种思路 include stdio h intmain inta b c 先定义变量 printf 请输入 n scanf d d amp a amp b 输入两个整型数字 if a gt b for inti b i gt 0 i if a i 0 amp amp b i stdio h

题目:随机输入两个数,求其最大公约数

在此展示三种常用解题思路
1.首先展示第一种思路

#include  
     int main() { 
    int a,b,c; //先定义变量 printf("请输入:\n"); scanf("%d%d",&a,&b); //输入两个整型数字 if(a<b) { 
    c=a; a=b; b=c; //保证a≥b } int i = 0; for(i = b;i>0;i--) { 
    if(a%i == 0 && b%i == 0) { 
    printf("gcd(%d,%d) = %d\n",a,b,i); break; } } return 0; } 

2.辗转相除法
这里涉及到一个公式:GCD(a,b) = GCD(b,a%b)

#include  
     int main() { 
    int a,b,c; printf("请输入:"); scanf("%d%d",&a,&b); if(a<b) { 
    c = a; a = b; b = c; //确保a≥b } while(b != 0) { 
    c = b; b = a%b; //辗转相除:相比第一种思路大大提高了代码的效率 a = c; } printf("最大公约数为:%d",a); return 0; } 

还有一种运用递归的思想

#include  
     int Gcd(int a,int b) { 
    if(a > b) { 
    if(a % b == 0) { 
    return b; } else { 
    return Gcd(b,a%b); } } else { 
    if(b % a == 0) { 
    return a; } else { 
    return Gcd(a,b%a); } } } int main() { 
    int a, b; int c = 0; printf("请输入两个整数:"); scanf("%d%d",&a, &b); c = Gcd(a, b); printf("GCD(%d,%d)=%d\n",a,b,c); } 

3.更相减损术
定义:(如果需要对分数进行约分,那么)可以折半的话,就折半(也就是用2来约分)。如果不可以折半的话,那么就比较分母和分子的大小,用大数减去小数,互相减来减去,一直到减数与差相等为止,用这个相等的数字来约分。

#include  
     main() { 
    int a,b; printf("请输入两个正整数:"); scanf("%d%d",&a,&b); while(a%2==0) { 
    a/=2; } while(b%2==0) { 
    b/=2; } //让两个数都为奇数 while(a!=b) { 
    if(a>b) a=a-b; else b=b-a; //更相减损术:当差值等于减数的值时即为最大公约数 } printf("GCD=%d\n",a); return 0; } 

本文结束,感谢阅览!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201256.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午9:44
下一篇 2026年3月20日 上午9:44


相关推荐

  • Linux通配符详解_Linux 通配符

    Linux通配符详解_Linux 通配符linux中常用的通配符详解:*:匹配0个或多个任意字符?:匹配任意单个字符[abc]:匹配abc中的任意单个字符[!abc]:匹配除abc中的任意单个字符[a-z]:匹配a-z中任意单个字符{string1,string2,…}:匹配string1,string2,或更多字符串例如:有file.jpg,file1.jpg,file2.jpg…file14.jpg共15个文件l…

    2026年1月25日
    4
  • Linux【实操篇】—— 日志管理

    Linux【实操篇】—— 日志管理Linux 操作系统日志管理含实操案例

    2026年3月19日
    3
  • python中的ideavim有什么作用_IdeaVim插件施用技巧

    python中的ideavim有什么作用_IdeaVim插件施用技巧IdeaVim插件使用技巧在IDEAIntellij小技巧和插件一文中简单介绍了一下IdeaVim插件。在这里详细总结一下这个插件在日常编程中的一些常用小技巧。供有兴趣使用这个插件,但对Vim还不十分熟悉的朋友参考。当然基本的hjkl移动光标和几种常见模式等等基本概念就略过不提了。为了确保只包含常用操作,这里提到的技巧都没有从现成文档里抄,而是凭记忆列出(不常用自然就不记得了)。估计会有所遗…

    2026年4月20日
    6
  • WiFi 标准「建议收藏」

    WiFi 标准「建议收藏」目录802.11a/b/g/n/ac/axWiFi6主要特点802.11a/b/g/n/ac/ax参考:802.11a/b/g/n/ac是什么以及它们有什么区别802.11是一种无线局域网标准,802.11a/b/g/n/ac都是由802.11发展而来的。不同的后缀代表着不同的物理层标准工作频段和不同的传输速率,也就是说它们的物理层和传输速度不同。WiFi标准 协议 工作频率 信号 最大传输速率 802.11 …

    2022年7月21日
    16
  • 955 MCP+A2A 从0到1构建类Manus多Agent全栈应用

    955 MCP+A2A 从0到1构建类Manus多Agent全栈应用

    2026年3月15日
    3
  • (超详细!!)Pytorch循环神经网络(RNN)快速入门与实战

    (超详细!!)Pytorch循环神经网络(RNN)快速入门与实战0 前言很久没用过 Pytorch 忘得差不多了 最近课题需要用 所以整理一下 RNN 的使用方法 记得去年学这部分一直很迷糊 所以希望这篇博客能对大家有所帮助 1 简单循环神经网络结构先简单聊聊 RNN 的结构 最简单的一层 RNN 网络结构如下图所示 其中 每个箭头都表示一个权值 输入为向量 X x1 x2 xT X x 1 x 2 x T X x1 x2 xT 输出向量为 Y y1 y2 yT Y y1 y2 y T Y y1 y2 yT

    2026年3月26日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号