永发信息网

懂java的进,求2数的最大公约数

答案:7  悬赏:30  手机版
解决时间 2021-11-26 21:21
  • 提问者网友:不要迷恋哥
  • 2021-11-26 01:40
懂java的进,求2数的最大公约数
最佳答案
  • 五星知识达人网友:爱难随人意
  • 2021-11-26 03:13
辗转相除法.
  当两个数都较大时,采用辗转相除法比较方便,方法是:
  以小数除大数,能整除,小数就是所求的最大公约数.否则就用余数来除刚才的除数;再用这新除法的余数去除刚才的余数.依此类推,直到一个除法能够整除,这时作为除数的数就是所求的最大公约数.
  例如:求4453和5767的最大公约数时,可作如下除法.
  5767÷4453=1余1314
  4453÷1314=3余511
  1314÷511=2余292
  511÷292=1余219
  292÷219=1余73
  219÷73=3
  于是得知,5767和4453的最大公约数是73.
  辗转相除法适用比较广,比短除法要好得多,它能保证求出任意两个数的最大公约数.
  class ex1
{
int gys1(int m, int n) // 循环实现
{
int k,y;
if(m {
k=m;
m=n;
n=k;
}
while(m%n!=0)
{
y=m%n;
m=n;
n=y;
}
return n;
}
  int gys2(int m,int n)  //递归实现
{
int k,y;
if(m {
k=m;
m=n;
n=k;
}
y=m%n;
if(y==0)
{
return n;
}
else
{
m=n;
n=y;
return gys2(m,n);
}
}
  public static void main(String[] args)
{
ex1 e1=new ex1();
System.out.println(e1.gys1(256,128));
ex1 e2=new ex1();
System.out.println(e1.gys2(256,128));
}
}
全部回答
  • 1楼网友:举杯邀酒敬孤独
  • 2021-11-26 08:44
do-while语句里,应该是c!=0
  • 2楼网友:摆渡翁
  • 2021-11-26 08:14
c==0还做判断做什么,一楼说的对。
  • 3楼网友:山有枢
  • 2021-11-26 07:25
import java.util.Scanner;
public class a {

public static void main(String []args)
{
System.out.println("请输入2个正整数:\n");
Scanner in=new Scanner(System.in);
int a=in.nextInt();
int b=in.nextInt();

int t;
if(a
while(a%b!=0)
{
t=a%b;
a=b;
b=t;

}

System.out.println("这俩个数的最大公约数是"+b);

}

}
  • 4楼网友:鸠书
  • 2021-11-26 06:02
import java.util.Scanner;
public class ComputeZ{
public static void main(String[]args)
{
System.out.println("请输入2个正整数:\n");
Scanner in=new Scanner(System.in);
int a=in.nextInt();
int b=in.nextInt();

if(a%b==0)
{
System.out.println("这俩个数的最大公约数是"+b);
return ;
}
else
{
int c;
do
{ c=a%b;
a=b;
b=c;
}
while(c==0);
System.out.println("这俩个数的最大公约数是"+b);

}
}
}

程序这样就可以了,但假如第一个数 与第二个数小的话,你的程序就有点问题了,算法没有考虑周到,假如输入5和6的话,最小公约数你的程序就是5,你应该还要改一点点
  • 5楼网友:低血压的长颈鹿
  • 2021-11-26 05:02
你的算法有问题,给你一个超级正确的算法:
//----------------
import java.util.Scanner;

public class Test2 {
public static void main(String[] args)

{
System.out.print("请输入2个正整数:\n");
Scanner in = new Scanner(System.in);
int a = in.nextInt();
int b = in.nextInt();
if (a < b) {//a中放大数
int temp = a;
a = b;
b = temp;
}

while (b != 0) {
int r = a % b;
a = b;
b = r;
}

System.out.println("这俩个数的最大公约数是" + a);

}
}
  • 6楼网友:孤独入客枕
  • 2021-11-26 03:55
你的算法有问题,给你一个超级正确的算法:
//----------------
import java.util.Scanner;

public class Test2 {
public static void main(String[] args)

{
System.out.print("请输入2个正整数:\n");
Scanner in = new Scanner(System.in);
int a = in.nextInt();
int b = in.nextInt();
if (a < b) {//a中放大数
int temp = a;
a = b;
b = temp;
}

while (b != 0) {
int r = a % b;
a = b;
b = r;
}

System.out.println("这俩个数的最大公约数是" + a);

}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯