C++ 洛谷 P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题

本文介绍了如何使用C++编程语言实现GCD(最大公约数)和LCM(最小公倍数)的计算,通过辗转相除法求解gcd,并利用gcd来计算lcm,然后在main函数中检验这两个数的乘积是否同时等于原给定的两个数的乘积。
摘要由CSDN通过智能技术生成

 

#include <iostream>
#include <cmath>

#include <algorithm>
using namespace std;


int gcd(int a,int b){
	int c;
	while(b){
		c=b;
		b=a%b;
		a=c;
	}

	return a;
}

int lcm(int a,int b){
	return (a/(gcd(a,b)))*b;
}
int main(){

	int x,y;
	cin>>x>>y;
	int total=x*y;//两个数的乘积同时也是gcd和lcm的乘积
	int j;//i是第一个数,j是第二个数
	int ans=0;
	for(int i=x;i<=total;i+=x){
		j=total/i;
			if(i*j==total){if((gcd(i,j)==x)&&(lcm(i,j)==y)) ans++;}//如果满足条件
		
	}

	cout<<ans;
	return 0;
}

温习gcd(用辗转相除法来做)和lcm(用gcd来算)

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值