① java 计算最小公倍数的问题
汗,这是欧几里得算法求最大公约数..
int r=m%n;
while(r!=0)
{ m=n;
n=r;
r=m%n;
}
这是欧几里得算法的实现...
欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理:
定理:gcd(a,b) = gcd(b,a mod b)
证明:a可以表示成a = kb + r,则r = a mod b
假设d是a,b的一个公约数,则有
d|a, d|b,而r = a - kb,因此d|r
因此d是(b,a mod b)的公约数
假设d 是(b,a mod b)的公约数,则
d | b , d |r ,但是a = kb +r
因此d也是(a,b)的公约数
因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,得证
② java求最小公倍数和最大公约数
/**
* 最大公约数
* 更相减损法:也叫更相减损术
* ??? 第一步:任意给定两个正整数;判断它们是否都是偶数。若是,则用2约简;若不是则执行第二步。
* 第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止。
* @param a
* @param b
* @return
*/
public static int gongyue( int a, int b){
if(a == b){
return a;
} else{
return gongyue(abs (a-b),min(a,b));
}
}
/**
* 最大公约数
* 辗转相除法:辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法.
* 例如,求(319,377):
* ∵ 377÷319=1(余58)
* ∴(377,319)=(319,58);
* ∵ 319÷58=5(余29),
* ∵ 58÷29=2(余0),
* ∴ (58,29)= 29;
* ∴ (319,377)=29.
* @param a
* @param b
* @return
*/
public static int gongyue1( int a, int b){
if(b!=0){
return gongyue1(b,a%b);
} else{
return a;
}
}
/**
* 最小公倍数
* 两个数乘积除去最大公约数即可
* @param a
* @param b
* @return
*/
public static int gongbei( int a, int b){
return a*b/gongyue(a,b);
}
public static int abs(int i){
return i>=0?i:-i;
}
public static int min(int a,int b){
return a<b?a:b;
}
③ java编程出三个数中的最小公倍数
你好,这是代码
LeastCommonMultipleTest.java
{
publicstaticvoidmain(String[]args){
//三个数
inta=7,b=9,c=11;
//最小公倍数
intnumber=0;
//从0开始判断,无上限(最大可能是三个数字的乘积)
while(!isCommonMultipleNum(number,newint[]{a,b,c})){
//从0开始判断,不是公倍数就+1
number++;
}
System.out.printf("最小公倍数是:"+number);
}
/**
*判断某数是否为几个数字的公倍数
*
*@paramnumber
*要判断是否为公倍数的数字
*@paramarr
*数字数组
*@return判断结果,是公倍数返回true,不是返回false
*/
(intnum,int[]arr){
//循环判断每一个数字
for(inti=0;i<arr.length;i++){
intcurrent=arr[i];
if(num<current||num%current!=0){
returnfalse;
}
}
returntrue;
}
}
④ 如何用java写一个求出最小公倍数的程序
int minMultiple(int a, int b) {
int r = a, s = a, t = b;
if (a < b) {
r = a;
a = b;
b = r;
}
while (r != 0) {
r = a % b;
a = b;
b = r;
}
return s * t / a;
}
从算法上讲绝对优于楼上的楼上
⑤ java 求最大公约数,最小公倍数
import java.util.Scanner;
public class C{
public static int fun1(int a1,int b1){
int c;
c=a1%b1;
while (c>0)
{a1=b1;
b1=c;
c=a1%b1;
//return b1;
}
return b1; //把return写在这里;
}
public static void main(String[] args) {
int a,b,temp;
int m;
Scanner in=new Scanner(System.in);
a=in.nextInt();
b=in.nextInt();
if(a<b)
{temp=a;a=b;b=temp;
}
m=fun1(a,b);
System.out.println("最大公约数为:"+m);
System.out.println("最小公倍数为:"+(a*b)/m);
}
}
⑥ 求JAVA最小公倍数的代码
package one;
import java.util.*;public class ProOne {
//题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
//程序分析:利用辗除法。
public static void main(String[] args)
{
int m=0,n=0,m1=0,n1=0;
int a;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入m的值:");
m=scanner.nextInt();
System.out.println("请输入n的值:");
n=scanner.nextInt();
//将输入的m和n值备份;
m1=m;
n1=n;
//取得两个数相除的余数;
a=m%n;
while(a!=0)
{
m1=n1;n1=a;a=m1%n1;
}
System.out.println("m,n的最大公约数为:"+n1);
//求两个数字的最小公倍数的方法为:(两个数的乘积)/(两个数字的最大公约数);
System.out.println("m,n两个数的最小公倍数为:"+m*n/n1);
}
}//我以前做的,你看看吧!
⑦ 简单的java程序 最小公倍数
packagecom.liu.test;
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
publicclassTest{
publicstaticintdoMax(inta,intb){
if(b==0)
returna;
else
returndoMax(b,a%b);
}
publicstaticintdoMin(inta,intb){
return(a*b)/doMax(a,b);
}
publicstaticintBubbleSort(inta[]){
for(inti=a.length-1;i>0;i--){
booleanflag=false;
for(intj=0;j<i;j++){
if(a[j+1]<a[j]){
inttemp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
flag=true;
}
}
if(!flag){
break;
}
}
returna[a.length-1];
}
publicstaticvoidmain(String[]args)throwsNumberFormatException,IOException{
while(true){
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));
System.out.println("输入一个正整数:");
inttarget=Integer.parseInt(br.readLine());
if(target<1||target>106){
System.out.println("输入必须在1到106之间");
}else{
inta[]=newint[target];
for(inti=1;i<target;i++){
for(intj=i+1;j<target-1;j++){
a[i-1]=doMin(i,j);
}
}
System.out.println(BubbleSort(a));
break;
}
}
}
}
⑧ 求最小公倍数的java method的code
public int leastCommonMultiple(int value1, int value2) {
int flag = value1;
int temp1 = value1;
int temp2 = value2;
if (value1 < value2) {
flag = value1;
value1 = value2;
value2 = flag;
}
while (flag != 0) {
flag = value1 % value2;
value1 = value2;
value2 = flag;
}
return temp1 * temp2 / value1;
}
⑨ 用Java 求两个数的最小公倍数
//求最大公约数
publicstaticintcommonDivisor(intn,intm){
//辗转相除是用大的除以小的。如果nwhile(n%m!=0){
inttemp=n%m;
n=m;
m=temp;
}
returnm;
}
//求最小公倍数
publicstaticintcommonMultiple(intn,intm){
returnn*m/commonDivisor(n,m);//两数相乘除以最大公约数
}
⑩ java 如何得到多个数据的最小公倍数啊
这个JDK里面貌似真没有,不过你可以用这个:
http://blog.163.com/zhao_8420001/blog/static/50370196201243133828127/