用C++实现最小公倍数和最大公约数

#include<iostream>
using namespace std;
int  main(void)
{
    int x, y, num1, num2, temp;
    printf("请输入两个正整数:\n");
    scanf("%d %d", &num1, &num2);
    if(num1 < num2)//交换
    {
        num1^=num2;
        num2^=num1;
        num1^=num2;
    }
    x = num1;
    y = num2;//让num1,num2值不变
    while(y != 0)
    {
        temp = x%y;
        x = y;
        //cout<<"x="<<x<<endl;
        y = temp;
        //cout<<"x="<<y<<endl;
    }
    printf("它们的最大公约数为:%d\n", x);
    printf("它们的最小公倍数为:%d\n", num1*num2/x);
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-08 01:12:51

用C++实现最小公倍数和最大公约数的相关文章

常见算法:C语言求最小公倍数和最大公约数三种算法

最小公倍数:数论中的一种概念,两个整数公有的倍数成为他们的公倍数,当中一个最小的公倍数是他们的最小公倍数,相同地,若干个整数公有的倍数中最小的正整数称为它们的最小公倍数,维基百科:定义点击打开链接 求最小公倍数算法: 最小公倍数=两整数的乘积÷最大公约数 求最大公约数算法: (1)辗转相除法 有两整数a和b: ① a%b得余数c ② 若c=0,则b即为两数的最大公约数 ③ 若c≠0,则a=b,b=c,再回去运行① 比如求27和15的最大公约数过程为: 27÷15 余1215÷12余312÷3余0

最小公倍数和最大公约数求解方法

1.利用辗转相除法求出最大公约数 2.得到最大公约数后,两数相乘除以最大公约数即的最小公倍数 function gcb(x,y){ if(y==0) return x; else return gcb(y,x%y); } function minAndMax(x,y){ var max=x>=y?gcb(x,y):gcb(y,x); var min=x*y/max return "最小公倍数:"+min+"\n最大公约数:"+max; } console.lo

C语言求最小公倍数和最大公约数三种算法(经典)

把以前写的一些经验总结汇个总,方便给未来的学弟学妹们做个参考! --------------------------永远爱你们的:Sakura 最小公倍数:数论中的一种概念,两个整数公有的倍数成为他们的公倍数,其中一个最小的公倍数是他们的最小公倍数,同样地,若干个整数公有的倍数中最小的正整数称为它们的最小公倍数,维基百科:定义点击打开链接 求最小公倍数算法: 最小公倍数=两整数的乘积÷最大公约数 求最大公约数算法: (1)辗转相除法 有两整数a和b: ① a%b得余数c ② 若c=0,则b即为两

(hdu step 2.1.1)最小公倍数(使用最大公约数来辅助求最小公倍数)

题目: 最小公倍数 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3609 Accepted Submission(s): 2596   Problem Description 给定两个正整数,计算这两个数的最小公倍数. Input 输入包含多组测试数据,每组只有一行,包括两个不大于1000的正整数. Output 对于每个测试用例,给出这

求最小公倍数和最大公约数

1.分解素因数法:把每个数分别分解素因数,再把各数中的全部公有素因数提取出来连乘,所得的积就是这几个数的最大公约数:先把这几个数的质因数写出来,最小公倍数等于它们所有的质因数的乘积: 2.短除法:短除法求最大公约数,先用这几个数的公约数连续去除,一直除到所有的商互质为止,然后把所有的除数连乘起来,所得的积就是这几个数的最大公约数: 把数字依次相乘,最小公倍数等于它们所有因数的乘积: public class LeastCommonMultiple { // 定义两个数 private int m

最小公倍数和最大公约数

最近做到一个 分核桃的题.原题描述如下,就是一个求最小公倍数的题.这个知识点已经忘了..就去百度查了一下,就有了这一篇总结. 这个是百度上的定义. 另外一个很重要的点 就是:最小公倍数=x*y/最大公约数:所以重点就转到了求最大公约数上.最大公约数可以用以下三种方法:辗转相除法,更相折损法(相减法),穷举法.代码如下. 1 import java.util.Scanner; 2 3 4 public class 最小公倍数{ 5 public static void main(String[]

求2个数的最小公倍数和最大公约数

1 # -*- coding: UTF-8 -*- 2 3 def gongyueshu(m, n): 4 if n == 0: 5 return m 6 else: 7 return gongyueshu(n, m%n) 8 9 def gongbeishu(m, n): 10 gongyue = gongyueshu(m, n) 11 return (m * n) / gongyue 12 13 gong = gongyueshu(m=18, n=6) 14 print(gong) 15 g

HDU 1713 最小公倍数与最大公约数的问题 相遇周期

欢迎参加——BestCoder周年纪念赛(高质量题目+多重奖励) 相遇周期 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2465    Accepted Submission(s): 1236 Problem Description 2007年3月26日,在中俄两国元首的见证下,中国国家航天局局长孙来燕与俄罗斯联邦航天局局长别尔米诺夫

C编程:求最大公约数,最小公倍数。

#include<stdio.h> int main() { int a,b;//两个数 int x,y;//暂时保存a,b以便后面求最小公倍数p=(a*b)/a int p;//最小公倍数 int temp; while(scanf("%d %d",&a,&b)!=EOF)//ctrl+Z退出循环 { x=a; y=b;//暂时保存a,b的原值到x,y中,因为后面a,b的值要变. while(b!=0) { temp=a%b; a=b; b=temp; }