您的位置:首页 > 其它

笔试—分解质因素、最大公约数和最小公倍数

2013-10-21 22:05 260 查看
昨天去4399笔试,考了一道分解质因素的题,又想到上次去网易笔试的时候考了一道最大公约数的题,并且考虑最小公倍数与最大公约之间的关系,决定一起贴不出,算是对小学题的一次回顾,对编程的一次练习。其实,这些都是经典的编程题。

先分别是用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: