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


相关文章
|
11天前
|
算法 数据安全/隐私保护
常用的有限元网格生成方法
本文介绍了三种常见的有限元网格生成方法:映射法、四(八)叉树法和Delaunay三角化法。映射法通过坐标变换将物理域映射到规则参数域,适合生成结构化和非结构化网格,但处理复杂区域时较困难。四(八)叉树法基于栅格,通过递归细分逼近边界,适用于非结构化网格,但内部和边界网格的相容剖分较复杂。Delaunay三角化法通过保证外接圆特性生成高质量网格,适用于凸区域,但在凹区域需进行边界恢复。前沿推进法则从边界开始逐步向内生成网格,边界质量好,但数据结构设计和推进规则制定有一定挑战。这些方法各有优缺点,常结合使用以优化网格剖分。
227 1
是的方法
第三份阿发顺大丰阿萨德
|
9月前
|
C#
C#视频—方法
C#视频—方法
v-for的四种方法
v-for的四种使用方法分别是: 1.使用v-for循环一个简单的数组 2.使用v-for循环一个复杂的数组 3.使用v-for循环对象 4.v-for循环一个迭代的数字
|
Java 编译器 C语言
方法的使用
方法的使用
94 0
方法的使用
|
JavaScript 前端开发
getMonth() 方法
getMonth() 方法
126 0
|
Python 容器
强大的 accessor 方法
强大的 accessor 方法
|
机器学习/深度学习
基于2D标靶的摄像机标定方法
基于2D标靶的摄像机标定方法
想求问一下,瑜伽的练习方法
沐鸣如果勉强坐得太久,很容易因为身体酸麻涨痛而对瑜伽坐姿练习发生退却之心,所以最初练习以“短时多次”为宜,慢慢就能享受到打坐的乐趣了练习瑜伽坐姿时,要坚持腰背挺直,下颗内收,使头部、颈部和脊椎保持在一条直线上。此外,练习全莲花坐时,注意膝盖不要上浮。>
|
Android开发
两个方法搞定透明状态栏
两个方法搞定透明状态栏
1442 0