循环-14. 最大公约数和最小公倍数

 1 /*
 2  * Mian.c
 3  * C14-循环-14. 最大公约数和最小公倍数
 4  *  Created on: 2014年8月1日
 5  *      Author: Boomkeeper
 6  *******测试通过*********
 7  */
 8
 9 #include <stdio.h>
10
11 /**
12  * 最大公约数
13  */
14 int greatestCommonDivisor(int M, int N) {
15     int i;
16     for (i = (M < N ? M : N); i > 1; i--) {
17         if (M % i == 0 && N % i == 0)
18             break;
19     }
20     return i;
21 }
22
23 /**
24  * 最小公倍数
25  */
26 int leastCommonMultiple(int M, int N) {
27     int i;
28     for (i = (M > N ? M : N); i <= M * N; i++) {
29         if (i % M == 0 && i % N == 0)
30             break;
31     }
32     return i;
33 }
34
35 int main(void){
36
37     int M,N;//题目中的M N
38
39     scanf("%d %d",&M,&N);
40     printf("%d %d\n",greatestCommonDivisor(M,N),leastCommonMultiple(M,N));
41
42     return 0;
43 }

参考自:

http://www.myexception.cn/other/1673775.html

题目链接:

http://pat.zju.edu.cn/contests/basic-programming/%E5%BE%AA%E7%8E%AF-14

    

循环-14. 最大公约数和最小公倍数

时间: 2024-11-17 09:18:05

循环-14. 最大公约数和最小公倍数的相关文章

循环-14. 最大公约数和最小公倍数(15)

1 #include<iostream> 2 using namespace std; 3 int main(){ 4 int a,b,m,n,x; 5 cin>>a>>b; 6 m=a>b?a:b; 7 n=a+b-m; 8 x=n; 9 while(x!=0){ 10 x=m%n; 11 m=n; 12 n=x; 13 } 14 cout<<m<<" "<<a*b/m<<endl; 15 re

javascript(最大公约数、最小公倍数)

var a = 5; var b = 15; var min = Math.min(a, b); var max =Math.max(a, b); //for循环求最大公约数 --- ( 最小公倍数 = a * b / 最大公约数 ) for ( var  i = min; i > 0; i-- ) { if( a % i == 0 && b % i == 0 ) { console.log(i); break; } } //for循环求最小公倍数 for ( var i = max

求m和n的最大公约数和最小公倍数

题目:输入两个正整数m和n,求其最大公约数和最小公倍数. 做这道题时,特意去查看了一下什么是最大公约数和最小公倍数. 后来直接去看了求解的思想,相信到企业中不会要求你闭门造车,若已有先例,可以研究之后拿来使用. 具体的思想是这样的: 1>使两个数,m大于n 2>m%n 若结果为0,那么n就是最大公约数 若结果不为0,那么就要让n%(m%n). 写到这边就会发现,这又是一道关于递归的思想的问题.每次的运算都和上一次的运算的结果有关. 因此代码如下. 1 //递归算法 2 public stati

C语言求最大公约数和最小公倍数

求最大公约数和最小公倍数 假设有两个数a和b,求a,b的最大公约数和最小公倍数实际上是一个问题,得出这两个数的最大公约数就可以算出它们的最小公倍数. 最小公倍数的公式是 a*b/m m为最大公约数 因为 a=m*i; b=m*j; 最小公倍数为 m*i*j 那么,下面就开始计算a和b的最大公约数. 更相损减法: <九章算術·方田>作分數約簡時,提到求最大公因數方法:反覆把兩數的較大者減去較小者,直至兩數相等,這數就是最大公因數.這方法除了把除法換作減法外,與輾轉相除法完全相同.例如書中求91和

奇葩的求最大公约数、最小公倍数、分解质因数的做法(C语言)

奇葩的求最大公约数.最小公倍数.分解质因数的做法(C语言) 1 /* 2 最奇葩的求最大公约数与最小公倍数 3 create by laog 4 time 2017年7月27日12:23:14 5 */ 6 7 //两个数的最大公约数 8 //两个数的最小公倍数 9 //将一个正整数分解质因数 --和 2.3.5取余 10 11 #include <stdio.h> 12 13 int main1() 14 { 15 // 3,4 16 //20 17 int v; 18 scanf(&quo

写一个方法,求两个数的最大公约数和最小公倍数。

package homework0702; /* * 最大公约数 利用辗转相除法求解两个正整数的最大公约数 在循环中,只要除数不等于0,用较大的数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环较小的数,如此循环直到较小的数值为0,返回较大的数.即为最大公约数. 辗转相除法(欧几里得算法) 定理:两个整数的最大公约数等于其中较小的那个数和两数的相除余数的最大公约数.最大公约数(greatest common divisor)缩写为gcd. 最小公倍数 最小公倍数 = (a

c语言:输入两个正整数m和n,求其最大公约数和最小公倍数

输入两个正整数m和n,求其最大公约数和最小公倍数. 解:程序: #include <stdio.h> int main() { int num1, num2, t,p; printf("请输入两个正整数:"); scanf("%d,%d", &num1, &num2);//7,8 p = num1*num2; while (t = num1%num2)//7           1        0,循环结束 { num1 = num2;

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; }

codevs 1012 最大公约数以及最小公倍数问题 x

题目描述 Description 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数 条件:  1.P,Q是正整数 2.要求P,Q以x0为最大公约数,以y0为最小公倍数. 试求:满足条件的所有可能的两个正整数的个数. 输入描述 Input Description 二个正整数x0,y0 输出描述 Output Description 满足条件的所有可能的两个正整数的个数 样例输入 Sample Input 3 60 样例