求公因数的方法(C/C++)

简介: 求公因数的方法(C/C++)

比较好用的有这么几种:

1、辗转相除法

C语言:

#include <stdio.h>
int main() {
  int a, b, r;//两数a,b
  scanf("%d%d", &a, &b);
  r = a % b;
  while (r != 0) {
    a = b;
    b = r;
    r = a % b;
  }
  printf("%d", b);//b即为公因数
}

C++:

#include <iostream>
using namespace std;
int main() {
  int a, b, r;//两数a,b
  cin >> a >> b;
  r = a % b;
  while (r != 0) {
    a = b;
    b = r;
    r = a % b;
  }
  cout << b; //b即为公因数
}


2.辗转相减法

原理:

       m不等于n,循环以下条件:

       1.若m>n,使m=m-n;

       2.若m

       最后m与n相同,函数返回m或n即可

C语言:

#include <stdio.h>
int gongyueshu(int m, int n) {//求公因数函数
  while (m != n) {
    if (m > n)
      m = m - n;
    else
      n = n - m;
  }
  return n;
}
int main() {
  int x, y;
  scanf("%d%d", &x, &y);
  printf("%d", gongyueshu(x, y));
}

C++:

#include <iostream>
using namespace std;
int gongyueshu(int m, int n) {//求公因数函数
  while (m != n) {
    if (m > n)
      m = m - n;
    else
      n = n - m;
  }
  return n;
}
int main() {
  int x, y;
  cin >> x >> y;
  cout << gongyueshu(x, y);
}


3.C++中的特殊函数__gcd()


//__gcd()函数(注意有两个下划线_)
#include <iostream>
#include <algorithm>//要用函数所需要的头文件
using namespace std;
int main() {
  int x = 11, y = 33;
  cout << __gcd(x, y);
}

b36b1665d3094f789281c32de7b92c40 (1).png


相关文章
|
9月前
|
监控 安全 调度
任务调度企业级场景下的新选择,兼容 XXL-JOB 通信协议
XXL-JOB 是一个开源的分布式任务调度平台,开箱即用、简单易上手,得到了很多开发者的喜爱。和其他中间件开源项目一样,当开发者把开源项目部署到公共云,应用到企业级场景中时,就会在稳定性、性能、安全、其他云产品间集成体验上提出更高的要求。基于此背景,阿里云微服务引擎 MSE 基于自研的分布式任务调度平台 SchedulerX,通过兼容 XXL-JOB 客户端的通信协议,在开源 XXL-JOB 版本的基础上,提升了稳定性、安全、性能、可观测等能力,满足企业客户的需求。此外,为方便测试,提供了一个月 400 元额度的免费试用和预付费首购 5 折、续费 6.5 折起的优惠。
418 178
|
编译器 C语言 C++
C语言基础教程(宏的使用和多文件编程)
C语言基础教程(宏的使用和多文件编程)
345 0
|
自然语言处理 IDE 开发工具
通义灵码编程智能体上线,支持Qwen3模型
通义灵码最全使用指南,一键收藏。
128876 31
通义灵码编程智能体上线,支持Qwen3模型
|
存储 Rust JavaScript
TDengine支持哪些编程语言的连接器?
【5月更文挑战第13天】TDengine支持哪些编程语言的连接器?
179 0
|
弹性计算 大数据 测试技术
阿里云服务器租用价格表(2023更新)
2023年阿里云服务器租用价格,轻量服务器和云服务器ECS优惠价格表,阿里云轻量服务器2核2G3M带宽轻量服务器一年108元,2核4G4M带宽轻量服务器一年297.98元12个月,云服务器ECS包括通用算力型u1、ECS计算型c7、通用型g7和内存型r7均有活动,分享云服务器详细价格表如下:
241 0
|
人工智能 算法
合并果子(优先级队列)
合并果子(优先级队列)
84 0
|
XML 数据格式
超简单的自定义ImageView,支持圆角和直角
需求:ImageView显示的图片,上方的两个角是圆角,下方的两个角是直角。 ![需求图](https://img-blog.csdn.net/20180125151146126?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjYyODc0MzU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
|
存储 机器学习/深度学习 PyTorch
Java实现两个有序的链表合并
Java实现两个有序的链表合并
|
存储 Java 编译器
一个 static 还能难得住我?(二)
static 是我们日常生活中经常用到的关键字,也是 Java 中非常重要的一个关键字,static 可以修饰变量、方法、做静态代码块、静态导包等,下面我们就来具体聊一聊这个关键字,我们先从基础开始,从基本用法入手,然后分析其原理、优化等。
一个 static 还能难得住我?(二)