在 C++ 中不使用递归或欧几里得算法求两个数的最大公约数
如我们所知,最大公约数或最大公约数可以使用欧几里得算法轻松计算。但我们将在此探讨如何不使用欧几里得算法或任何递归算法来生成最大公约数或最大公约数。假设存在两个数 16 和 24。两个数的最大公约数为 8。
此方法很简单。如果这两个数中较大的那个能被较小的数整除,那么它就是最大公约数,否则从(较小数 / 2)到 1,如果当前元素可以同时整除这两个数,那么它就是最大公约数。
示例
#include <iostream>
using namespace std;
int gcd(int a, int b) {
int min_num = min(a, b);
if (a % min_num == 0 && b % min_num == 0)
return min_num;
for (int i = min_num / 2; i >= 2; i--) {
if (a % i == 0 && b % i == 0)
return i;
}
return 1;
}
int main() {
int a = 16, b = 24;
cout << "HCF: "<< gcd(a, b);
}输出
HCF: 8
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP