C++求最大公因数(两个数字版)
本帖最后由 高山 于 2022-8-23 14:10 编辑前言
本帖将会告诉你C++如何做求解最大公因数(也叫最大公倍数)。
回复奖励1鱼币,3次(定时提升)代码说明自定义函数版#include <bits/stdc++.h>//头文件
using namespace std;//命名空间
int gcd(int a,int b)//自定义函数求解
{
if (a % b == 0)
{
return b;
}
else
{
return gcd(b,a % b);
}
}
int main()
{
int a,b;//定义
cin >> a >> b;//输入
cout << gcd (a,b);//输出
return 0;
}
C++自带函数版#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n,m;
cin >> n >> m;
cout<< __gcd(n,m);
return 0;
}附件下载(不用下C++也能用)C++自带函数款
C++自定义函数款(权限限制,先用腾讯微云,登录QQ账户即可)
https://share.weiyun.com/NlgrTJEg
高山 发表于 2022-8-22 09:23
能说说吗
#include <stdio.h>
int main()
{
int a,b,mid_result,min,n=2,s;
printf("\n\
求最大公约数与最小公倍数程序\n\n\
请输入2个大于1的正整数(中间有空格):\n");
scanf("%d %d",&a,&b);
printf("若要求最大公约数,请输入0,若要求最小公倍数,请输入1.\n");
scanf("%d",&s);
mid_result=a*b;
if(a>=b)
{
min=b;
}
else
{
min=a;
}
while(n<=min)
{
if((mid_result/n)%a||(mid_result/n)%b)
{
n++;
}
else
{
mid_result=mid_result/n;
}
}
if(s==0)
{
printf(" %d 与 %d 的最大公约数为 %d !",a,b,a*b/mid_result);
}
else
{
printf(" %d 与 %d 的最小公倍数为 %d !",a,b,mid_result);
}
return 0;
}
以前随便做的冗长代码{:10_277:} 支持楼主{:10_279:} 反对楼主,希望楼主不要误人子弟。
从第一句“ C++如何做求解最大公因数(也叫最大公倍数)”就开始令人迷惑,试问楼主什么叫“最大公倍数”,又是怎么“也称最大公因数”的?
自定义函数和自带函数版具有相同的问题:不使用标准写法。头文件 bits/stdc++.h 和 __gcd 均没有在标准中被定义,在大多数情况下使用此类非标准内容都是强烈不推荐的——除非能够保证使用的功能将在应用的时间和空间范围之内保持稳定。
如果您想使用 C++ 内置的最大公因数计算函数,定义在头文件 <numeric> 中的 std::gcd 是一个不错(远比 __gcd 好得多)的选择。 我有一种非常复杂的方法 额外减小 发表于 2022-8-21 23:25
我有一种非常复杂的方法
能说说吗 本帖最后由 陈尚涵 于 2022-8-22 16:16 编辑
但是我请楼主先认识最大公因数和最大公倍数概念的定义
最大公因数:指两个数字共有的因数中最大的因数
最大公倍数:指两个数字都是他的因数且是符合条件中最大的,既无限,一般称之为最小公倍数
也就是说最大公因数≠最大公倍数
求最大公因数有很多方法,如辗转相减法,辗转相除法,还有穷举等
另外,最小公倍数=最大公因数×第一个数×第二个数 陈尚涵 发表于 2022-8-22 16:03
但是我请楼主先认识最大公因数和最大公倍数概念的定义
最大公因数:指两个数字共有的因数中最大的因数
...
又来捉虫了,「最小公倍数=最大公因数×第一个数×第二个数」不总是成立,仅当两个数互质时成立。您可能想描述的是「最小公倍数×最大公因数=第一个数×第二个数」 dolly_yos2 发表于 2022-8-22 21:12
又来捉虫了,「最小公倍数=最大公因数×第一个数×第二个数」不总是成立,仅当两个数互质时成立。您可能 ...
对不起哈乘除反了
一个错别字:前言那里,没有最大公倍数,应该是最大公约数
页:
[1]