求三个数的最小公倍数的思路: 分解质因数,当剩下的三个数没有公因数时找两个数之间有没有公因数,再约,另一个不变。做到两两互质。再将因数,约分后的数相乘。 求最大公因数,就是看三个数都能除尽的最大的数 步骤:1 每两个数之间约到没有公因数,得到的数两两互质(重点 如何根据给的三个数得到两两互质的三个数) 2 得到的两两互质的数相乘的结果就是三个数的最小公倍数 求两个数的最大公因数 两个数分别除以最大公因数,就得到了两个互质的数,两个互质的数相乘就得到了两个数的最大公倍数。 方法一:推荐该方法 import java.util.*; //求两个数的公因数 public class Test1 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); int a=sc.nextInt(); int b=sc.nextInt(); if(a<b)//两数最大数保存在 a中 { int temp=b; b=a; a=temp; } int num1=a,num2=b; while(num2!=0) { int temp=num1%num2; num1=num2; num2=temp; } System.out.println("公因数是"+num1); } } 上面程序求的两个数的公因数的方法主要在while循环中,其实while循环最多执行2次,当两个数有公因数不是两个数中的一个时时循环执行2次,当公因数时两个数之间的一 个时(也就是说一个数是另一个的倍数) 第一种情况(两个数的最大公因数不是两个数中的一个):以 14 12为例 第一次执行:用14除以12的余数得到两个数之间除了最大公因数之外的因子的差距 14=2*7 7个2 12=2*6 6个2 最大公因数是12 也就是差了一个2 第二次执行:让12除以两个数之间除了最大公因数之外的因子的差距 第二次执行后循环的条件就不满足了 12除以一个2的结果就是最大公因数 第二种情况(两个是的最大公因数是两个数中的一个):以27 9 为例 第一次执行:用27除以9的余数为0 两个数除了最大公因子之外的因子不存在差距 循环条件不满足,9就是公因数 上面的程序如果要得到最小公倍数就输出a*b/最大公因数即可也就是输出a*b/num1; 方法二:public class test15 { public static void main(String[] args) { int m=6,n=7;//两个数 int M;//M放最小的那个数 int x=0; M=m; if(m>n) M=n; //求出最小的数M for(int t=1;t<=M;t++) if(m%t==0&&n%t==0)//能同时被m和n整除的数赋值给x,虚幻到最后,得到的x就是最大公因数 x=t; System.out.print(x); } }
求三个以上的数最小公倍数 下面的程序没有求几个整数的最大公因数,而是只求了两两之间的最大公因数
package lilu.gongbeishu;
import java.util.*;
//求多个数的最小公倍数
public class Test2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();//n 个数求最小公倍数
int[] a=new int[n];
for(int i=0;i<n;i++)
{
a[i]=sc.nextInt();
}
int yinzi=1;
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
int num1,num2;
if(a[i]<a[j])//两数最大数保存在 num1中
{
num1=a[j];
num2=a[i];
}
else
{
num1=a[i];
num2=a[j];
}
while(num2!=0)
{
int temp=num1%num2;
num1=num2;
num2=temp;
}
a[i]/=num1;
a[j]/=num1;
yinzi*=num1;
//System.out.println(i+" "+j+" "+a[i]+" "+a[j]+" "+yinzi);
}
}
for(int i=0;i<n;i++)
{
yinzi*=a[i];
}
System.out.println("最小公倍数是"+yinzi);
}
}相同点:都用短除法,都要把所有的除数和商连乘起来。
不同点:求两个数的最小公倍数每次都用共有的质因数去除,除到两个商互质为止;求三个数的最小公倍数先用三个数的公有质因数去除,然后每两个数如果有公有质因数,再
用每两个数共有的质因数去除,一直除到每两个商是互质数为止。
求多个数的最小公倍数
最新推荐文章于 2020-04-24 22:01:05 发布