最大公约数和最小公倍数问题

该博客主要展示了两个C++代码片段,用于计算两个数的最大公约数(GCD)和最小公倍数(LCM)。在主函数中,通过遍历并检查所有可能的因数来找出满足条件的LCM。GCD函数采用递归的欧几里得算法实现。博主通过计算x和y的乘积以及检查除以i的余数,找到所有与x的GCD等于x的i值,并统计这些值的数量。
摘要由CSDN通过智能技术生成
#include<iostream>
#include<cstdio>
using namespace std;
typedef long long LL;
LL gcd(LL a, LL b);

LL res;
LL x, y;//以y为最小公倍数,则满足条件的数一定小于y。 

signed main()
{
	cin>>x>>y;
	
	LL t=x*y; 
	for(LL i=1;i<=y;i++) if(t%i==0&&gcd(i, t/i)==x) res++;
	
	cout<<res<<endl;
}

LL gcd(LL a, LL b)
{
	return b?gcd(b, a%b):a;
}
/*
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long LL;
LL gcd(LL a, LL b);

LL x, y;

signed main()
{
	cin>>x>>y;
	
	LL t=x*y, res=0;
	for(LL i=1;i<=t/i;i++) if(t%i==0&&gcd(i, t/i)==x) res+=2;
	cout<<res<<endl;
}

LL gcd(LL a, LL b)
{
	return b?gcd(b, a%b):a;
}
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值