求公因数的方法(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


相关文章
|
6天前
|
敏捷开发 安全 Java
论软件维护方法及其应用
【11月更文挑战第16天】在软件开发的整个生命周期中,软件维护阶段占据了超过60%的时间。本文旨在深入探讨软件维护方法及其应用,通过笔者参与的一个实际Java项目为例,详细阐述软件维护的重要性、影响因素以及具体实践。
12 1
|
5月前
|
存储 缓存 Java
createTempFile方法详解
createTempFile方法详解
|
6月前
|
算法 数据安全/隐私保护
常用的有限元网格生成方法
本文介绍了三种常见的有限元网格生成方法:映射法、四(八)叉树法和Delaunay三角化法。映射法通过坐标变换将物理域映射到规则参数域,适合生成结构化和非结构化网格,但处理复杂区域时较困难。四(八)叉树法基于栅格,通过递归细分逼近边界,适用于非结构化网格,但内部和边界网格的相容剖分较复杂。Delaunay三角化法通过保证外接圆特性生成高质量网格,适用于凸区域,但在凹区域需进行边界恢复。前沿推进法则从边界开始逐步向内生成网格,边界质量好,但数据结构设计和推进规则制定有一定挑战。这些方法各有优缺点,常结合使用以优化网格剖分。
653 1
是的方法
第三份阿发顺大丰阿萨德
|
Java C语言
C#中的方法
C#中的方法
86 0
Egiht(八种方法)
Problem Description The 15-puzzle has been around for over 100 years; even if you don't know it by that name, you've seen it.
1330 0
|
测试技术 C#
分享几个实用的方法
  今天主要和大家分享的是本人总结的分页执行方法,也可以说就是分批执行;该篇采用java8新增的表达式来操作,希望能给各位带来好的帮助和在日常工作中提供便利;同样的操作流程和逻辑之前用C#代码写过一次,有需要的朋友可以看以前的博文; 分页方式拆分List为多个子集List方法 执行统一方法-无...
1208 0