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


相关文章
|
1月前
|
缓存 前端开发 JavaScript
componentWillMount()方法有什么用
componentWillMount() 是 React 组件生命周期中的一个方法,在组件首次渲染之前调用。可以用来进行初始化操作,如设置状态或加载数据,但不建议在此方法中执行复杂的异步操作。注意,此方法在 React 16.3 版本后已被标记为不安全,建议使用替代方法。
|
3月前
|
机器学习/深度学习 自然语言处理 API
10-22|处理脏话其他方法
10-22|处理脏话其他方法
|
存储 数据处理 数据库
结构化分析方法
1.概述 结构化方法是世界上第一个软件开发方法学,用来指导从需求分析、到设计开发各个阶段该怎么样做,采用什么样的方法,产出什么样的结果,从而保证整个软件开发周期可控。
192 0
|
Java 编译器 C语言
方法的使用
方法的使用
129 0
方法的使用
|
JavaScript 前端开发
getMonth() 方法
getMonth() 方法
187 0
|
机器学习/深度学习
基于2D标靶的摄像机标定方法
基于2D标靶的摄像机标定方法
|
Python 容器
强大的 accessor 方法
强大的 accessor 方法
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.
1337 0
|
测试技术 C#
分享几个实用的方法
  今天主要和大家分享的是本人总结的分页执行方法,也可以说就是分批执行;该篇采用java8新增的表达式来操作,希望能给各位带来好的帮助和在日常工作中提供便利;同样的操作流程和逻辑之前用C#代码写过一次,有需要的朋友可以看以前的博文; 分页方式拆分List为多个子集List方法 执行统一方法-无...
1212 0