首页 > 其他 > 详细

最小公倍数和最大公约数

时间:2018-03-10 23:51:43      阅读:356      评论:0      收藏:0      [点我收藏+]

最近做到一个 分核桃的题。原题描述如下,就是一个求最小公倍数的题。这个知识点已经忘了。。就去百度查了一下,就有了这一篇总结。

技术分享图片

这个是百度上的定义。

技术分享图片

技术分享图片

另外一个很重要的点 就是:最小公倍数=x*y/最大公约数;所以重点就转到了求最大公约数上。最大公约数可以用以下三种方法:辗转相除法,更相折损法(相减法),穷举法。代码如下。

 1 import java.util.Scanner;
 2 
 3 
 4 public class 最小公倍数{
 5     public static void main(String[] args) {
 6         Scanner in = new Scanner(System.in);
 7         System.out.print("input x :");
 8         int x = in.nextInt();
 9         System.out.print("input y :");
10         int y = in.nextInt();
11         
12         int z = Method(x,y);
13         System.out.println("辗转相除法:");
14         System.out.println("divisor : "+z);
15         System.out.println("multiple : "+(x*y/z));
16         
17         System.out.println("相减法:");
18         z = Subtraction(x,y);
19         System.out.println("divisor : "+z);
20         System.out.println("multiple : "+(x*y/z));
21         
22         System.out.println("穷举法:");
23         z = divisor(x,y);
24         System.out.println("divisor : "+divisor(x,y));
25         z=multiple(x,y);
26         System.out.println("multiple : "+multiple(x,y));
27     }
28     
29     //辗转相除法:返回公约数
30     public static int Method(int x,int y){
31         int a,b,c;
32         a=x;
33         b=y;
34         while(b!=0){
35             c=a%b;
36             a=b;
37             b=c;
38         }
39         return a;
40     }
41     //相减法
42     public static int Subtraction(int x,int y){
43         while(x!=y){
44             if(x>y){
45                 x=x-y;
46             }
47             else{
48                 y=y-x;
49             }
50         }
51         return x;
52     }
53     //穷举法  求公约数
54     public static int divisor(int x,int y){
55         int z;
56         for(z=x;z>0;z--){
57             if(x%z==0&&y%z==0){
58                 break;
59             }
60         }
61         return z;
62     }
63     //求公倍数
64     public static int multiple(int x,int y){
65         int z;
66         for(z=x;;z++){
67             if(z%x==0&&z%y==0){
68                 break;
69             }
70         }
71         return z;
72     }
73     
74 }

回到分核桃的题,因为是三个数,所以我用了穷举法求,其实用穷举就不用求公约数了直接公倍数就好。代码如下:

 1 import java.util.Arrays;
 2 import java.util.Scanner;
 3 
 4 public class 核桃数量 {
 5     public static int ICD(int a,int b,int c){
 6         int k=getMax(a,b,c);
 7         for(int i=k;;i++){
 8             if(i%a==0 && i%b==0 && i%c==0){
 9                 return i;
10             }
11         }
12         
13     }
14     public static int getMax(int a,int b,int c){
15         int aa[]={a,b,c};
16         Arrays.sort(aa);
17         return aa[2];
18     }
19     public static void main(String[] args) {
20         Scanner sc=new Scanner(System.in);        
21         int a=sc.nextInt();
22         int b=sc.nextInt();
23         int c=sc.nextInt();
24         System.out.println(ICD(a,b,c));
25     }
26 
27 }

然后看笔记上之前还有写段关于最大的最小公倍数:

1.大于1的两个相邻自然数必定互质=》公约数只有1的两个整数。

2.两个数的最小公倍数在最大情况就是当两个数互质时候,即为两数的乘积。

 

最小公倍数和最大公约数

原文:https://www.cnblogs.com/ShallByeBye/p/8542183.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!