两个整数的最大公约数:
算法一:
import java.util.Scanner;
/**
*
ClassName : yt
*
Description : 最大公约数算法1
* CreateDate : 2018年9月5日 下午5:31:08
* Author : YangTingWei
* @Version : V1.0.0
* @param
*/
public class yt {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入两个正整数(方法一):");
Scanner in = new Scanner(System.in);
int a=in.nextInt();
int b=in.nextInt();
int oa=a;
int ob=b;
if(a<b)
{
int m;
m=a; a=b; b=m;
}//若a<b,将a与b的值调换,使a中的数为最大
int r=a%b;
while(r!=0)
{
a=b;
b=r;
r=a%b;
}//辗转相除法求最大公约数
System.out.println(oa+"与"+ob+"的最大公约数是"+b);
}
}
算法二:
import java.util.Scanner;
/**
*
ClassName : yt1
*
Description : 最大公约数算法2
* CreateDate : 2018年9月5日 下午5:31:20
* Author : YangTingWei
* @Version : V1.0.0
* @param
*/
public class yt1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入两个正整数(方法二):");
Scanner in = new Scanner(System.in);
int a=in.nextInt();
int b=in.nextInt();
int oa=a;
int ob=b;
int d;
if(a<b)
d=a;
else
d=b;//将两者中较小数放入d
while(d>=1)
{
if(a%d==0 && b%d==0)
break;
d--;
}//从最大可能数递减,找出最大公约数
System.out.println(oa+"与"+ob+"的最大公约数是"+d)
}
}
算法三:
import java.util.Scanner;
/**
*
ClassName : yt2
*
Description : 最大公约数算法3
* CreateDate : 2018年9月5日 下午5:32:43
* Author : YangTingWei
* @Version : V1.0.0
* @param
*/
public class yt2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入两个正整数(方法三):");
Scanner in = new Scanner(System.in);
int a=in.nextInt();
int b=in.nextInt();
int gcd=1,k=1;
while(k<=a && k<=b)
{
if(a%k==0 && b%k==0)
gcd=k;
k++;
}
System.out.println(a+"与"+b+"的最大公约数是"+gcd);
}
}
三个正整数的最大公约数与最小公倍数:
import java.util.Scanner;
/**
*
ClassName : yt3
*
Description : 三个正整数的最大公约数与最小公倍数算法
* CreateDate : 2018年9月5日 下午5:32:58
* Author : YangTingWei
* @Version : V1.0.0
* @param
*/
public class yt3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入三个正整数:");
Scanner in = new Scanner(System.in);
int a=in.nextInt();
int b=in.nextInt();
int c=in.nextInt();
yt(a,b,c);//求三个正整数的最大公约数
yt1(a,b,c);//求三个正整数的最小公倍数
}//主函数结束
/**
* <p> Title : yt </p>
* <p> Description : 求三个正整数的最大公约数 </p>
* CreateDate : 2018年9月5日 下午5:28:38
* Author : YangTingWei
* @param @param a
* @param @param b
* @param @param c
* @return void
* @throws
*/
public static void yt(int a,int b,int c){
int r=1,k=1;
while(k<=a && k<=b && k<c)
{
if(a%k==0 && b%k==0 && c%k==0)
r=k;
k++;
}//求出a、b、c的公约数r
System.out.println(a+"、"+b+"与"+c+"的最大公约数是"+r);
}
/**
* <p> Title : yt1 </p>
* <p> Description : 求三个正整数的最小公倍数 </p>
* CreateDate : 2018年9月5日 下午5:29:17
* Author : YangTingWei
* @param @param a
* @param @param b
* @param @param c
* @return void
* @throws
*/
public static void yt1(int a,int b,int c){
int d=getMax(a,b,c);
int r=1,k=1;
for(k=d;;k++)
{
if(k%a==0 && k%b==0 && k%c==0)
{
r=k;
break;
}
k++;
}
System.out.println(a+"、"+b+"与"+c+"的最小公倍数是"+r);
}
/**
* <p> Title : getMax </p>
* <p> Description : 求三个数中最大值 </p>
* CreateDate : 2018年9月5日 下午5:29:51
* Author : YangTingWei
* @param @param a
* @param @param b
* @param @param c
* @param @return
* @return int
* @throws
*/
private static int getMax(int a, int b, int c) {
// TODO Auto-generated method stub
int max;
if(a<b)
max=b;
else
max=a;//求a、b中最大值
if(max<c)
{
int temp;
temp=max; max=c; c=temp;
}//求a、b、c中最大值
return max;
}
}
程序流程图:
算法一:
算法二:
算法三:
算法四: