求两数最小公倍数

输入代码:

/*
 * Copyright (c) 2014, 烟台大学计算机学院
 * All rights reserved.
 * 文件名称:sum123.cpp
 * 作    者:林海云
 * 完成日期:2015年1月10日
 * 版 本 号:v2.0
 *
 * 问题描述:求两数的最小公倍数
 * 输入描述:两个整数
 * 程序输出:最小公倍数
 */
#include<iostream>
using namespace std;
int gcd(int x,int y);
int gad(int x,int y);
int main()
{
    int m,n,sum;
    cin>>m>>n;
    sum=gad(m,n);
    cout<<sum<<endl;
    return 0;
}
int gcd(int x,int y)
{
    int r;
    while(y!=0)
    {
        r=x%y;
        x=y;
        y=r;
    }
    return x;
}
int gad(int x,int y)
{
    int s,d;
    s=x*y;
    d=s/gcd(x,y);
    return d;
}

运行结果:

总结:求两数的最小公倍数=两个数的积/两数的最小公约数;

最小公约数用辗转相除法求,设两数为m,n,两数相除的余数为r,r=x%y,x=y,y=r;如此辗转相除。

时间: 2024-10-10 08:48:08

求两数最小公倍数的相关文章

编程题:求两数之和

#include<stdio.h>       /*包含输入输出头文件*/ main()                            /*定义主函数*/ {  int a,b,sum;                /*定义整数变量a.b.sum*/ a=123;                        /*给a赋值*/ b=456;                        /*给b赋值*/ sum=a+b;                  /*令sum=a+b*/ p

(c语法百题7)求两数的整数商 和 余数

知识点: 求商和求余 /   和 % 的用法. 注意 /  中,两个%d的值为整数,即取整.有%f类的,就是商了,带小数的. 内容: 求两数的整数商 和 余数 输入说明: 一行两个整数 输出说明: 一行两个整数 输入样例: 若题目没有特别说明,则应该以多组测试数据方式读取,或者参考a001. 18 4 输出样例 : 4 2 #include <stdio.h> int main() { int a,b; scanf("%d %d",&a,&b); print

(c语法百题8)求两数的整数商 和 商

内容: 求两数的整数商 和 商 ,商保留两位小数 输入说明: 一行 两个整数 输出说明: 一行,一个整数,一个实数(两位小数) 输入样例: 若题目没有特别说明,则应该以多组测试数据方式读取,或者参考a001. 12 8 输出样例 : 1 1.50 #include <stdio.h> int main() { int a,b; scanf("%d %d",&a,&b); printf("%d %.2f\n",a/b,a/(1.0*b));

(c语法百题4)求两数中的较大者

知识点: if语句 内容: 求两数中的较大者 输入说明: 一行两个数 输出说明: 一行 一个 数字 输入样例: 若题目没有特别说明,则应该以多组测试数据方式读取,或者参考a001. 3 5 输出样例 : 5 #include <stdio.h> int main() { int a,b,c; scanf("%d %d",&a,&b); if(a<b) { c=b; a=c; } printf("%d\n",a); return 0;

算法怎么就这么难?----使用欧几里得算法求两数的最大公约数

本人菜鸟一枚,上午在看书的时候突然看到了求最大公约数的一个例题,突然就想到以前好像看过一个欧几里得算法,故又上网仔细找了一下欧几里得算法的原理.可能是本人时间长没看算法,脑子都生锈了. 看了几个讲解欧几里得算法的文章,大都只给公式,然后说了一大堆因为....在我还没看懂的时候,突然来了个所以...然后公式就这样推出来的.⊙﹏⊙b汗! 经过我这令人捉急的小脑袋转了半天,最后有了点眉目,所以拿出来和大家分享一下! 1.首先说一下:欧几里得算法是求两个数的最大公约数的,你可能会问:什么是最大公约数?

【c语言】不用大与小与号,求两数最大值

// 不用大与小与号,求两数最大值 #include <stdio.h> int max(int a, int b) { int c = a - b; int d = 1 << 31; if ((c&d) == 0) { return a; } else { return b; } } int main() { printf("%d是大数\n", max(0, 2)); printf("%d是大数\n", max(3, 4)); pr

问题 : 用指针????求两数的和与两数的差

问题 : 两数和与差(用参数带回结果) 题目描述 下面的程序,输入两个整数,调用函数ast后,输出了两数之和及两数之差.阅读程序,补全程序中空白处. #include <iostream> using namespace std; void ast(int x,int y,int *cp,int *dp) { //补全函数的定义 ___(1)____=x+y; ___(2)____=x-y; } int main() { int a,b,c,d; cin>>a>>b;

如何求两数的最大公约数

一: 更相减损 //熟知的辗转相除法变形 main() { int a,b; scanf("%d %d",&a,&b); while(a!=b) { if(a>b) a-=b; else b-=a; } printf("%d",a); } 二: 辗转相除 //一般用递归描述算法 gcd(m,n)与gcd(n,m mod n)相同 为什么? gcd(m,0)=m 为什么? 两数不需比较大小也行 为什么 ? main() { int a,b,r,t

【leetcode74】Sum of Two Integers(不用+,-求两数之和)

题目描述: 不用+,-求两个数的和 原文描述: Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -. Example: Given a = 1 and b = 2, return 3. 方法一:用位运算模拟加法 思路1: 异或又被称其为"模2加法" 设置变量recipe模拟进位数字,模拟加法的实现过程 代码: public class Solutio