笔试—分解质因素、最大公约数和最小公倍数
2013-10-21 22:05
260 查看
昨天去4399笔试,考了一道分解质因素的题,又想到上次去网易笔试的时候考了一道最大公约数的题,并且考虑最小公倍数与最大公约之间的关系,决定一起贴不出,算是对小学题的一次回顾,对编程的一次练习。其实,这些都是经典的编程题。
先分别是用JAVA实现,再利用最大公约数和最小公倍数之间关系来实现。
1.分解质因素:
法一:
法二:
其实,和法一没有本质的区别,但这里用到了StringBuffer.
2.最大公约数:
3.最小公倍数:
4.最大公约数和最小公倍数之间的关系:
如果m=a*b;n=b*c,那么他们的最大公约数为b,最小公倍数为a*b*c.同时最大公约数b=m*n/(a*b*c)最小公倍数a*b*c=m*n/b.编程是实现如下:
输出:
最大公约数为:8,最小公倍数数为: 48
先分别是用JAVA实现,再利用最大公约数和最小公倍数之间关系来实现。
1.分解质因素:
法一:
public class Test { private static void prime(int n){ if(n>0){ if(n<=3){ System.out.print(n); }else{ for(int i=2;i<=n/2;i++){ if(n%i==0){ System.out.print(i+"*"); n/=i; i=1; } } System.out.print(n); } } } public static void main(String[] args){ int i=10; prime(i); } }
法二:
其实,和法一没有本质的区别,但这里用到了StringBuffer.
public class Test2 { private static String prime(int n){ if(n>0){ StringBuffer str=new StringBuffer(); str.append(n+"="); if(n<=3){ str.append(n); //这里返回的时候要加toString,否则报错,下同。 return str.toString(); }else{ for(int i=2;i<=n/2;i++){ if(n%i==0){ str.append(i+"*"); n/=i; i=1; } } str.append(n); return str.toString(); } } return ""; } public static void main(String[] args){ int i=15; String s=prime(i); System.out.println(s); } }
2.最大公约数:
public class Test3 { private static int gcd(int m,int n){ while(n!=m){ if(m>n){ m=m-n; }else{ n=n-m; } } return m; } public static void main(String[] args){ int m=18; int n=16; int i=gcd(m,n); System.out.print(i); } }
3.最小公倍数:
public class Test4 { private static void lcm(int m,int n){ for(int i=n;i<=m*n;i++){ if(i%m==0&&i%n==0){ System.out.print(i); break; } } } public static void main(String[] args){ int m=16; int n=24; lcm(m,n); } }
4.最大公约数和最小公倍数之间的关系:
如果m=a*b;n=b*c,那么他们的最大公约数为b,最小公倍数为a*b*c.同时最大公约数b=m*n/(a*b*c)最小公倍数a*b*c=m*n/b.编程是实现如下:
public class Test5 { private static int gcd(int m, int n) { return n == 0 ? m : gcd(n, m % n); } private static int lcm(int m, int n) { return m * n / gcd(m, n); } public static void main(String[] args) { int m = 16; int n = 24; int i = gcd(m, n); int j = lcm(m, n); System.out.print("最大公约数为:"+i + ",最小公倍数数为: " + j); } }
输出:
最大公约数为:8,最小公倍数数为: 48
相关文章推荐
- 【Java笔试题】最大公约数和最小公倍数
- UVa 10791 最小公倍数的最小和(唯一分解定理)
- 求两个整数的最大公约数和最小公倍数
- 第十一周oj题目求最大公约数和最小公倍数
- 求两个数的最大公约数和最小公倍数;;加循环;
- 求两个数的最大公约数和最小公倍数的算法
- 一种很少见的求最大公约数和最小公倍数的方法
- Java最大公约数和最小公倍数的算法!
- java基础-利用基本循环语句计算输入的两个整数的最大公约数和最小公倍数
- 求最大公约数和最小公倍数
- 筛法求素数,唯一分解定理(最小公倍数的最小和,uva 10791)
- 利用辗转相除法求两个整数的最大公约数和最小公倍数。
- c++实验7-项目2 最大公约数和最小公倍数
- 求最大公约数和最小公倍数的常用解法
- 递归法求最大公约数和最小公倍数的实现代码
- 【上机笔试之十四】最小公倍数
- 求两个整数的最大公约数和最小公倍数
- 求分解后x的最小公倍数
- C语言.求最大公约数最小公倍数
- 求最大公约数和最小公倍数