java语言求最大公约数

た 入场券 2023-02-14 02:13 160阅读 0赞
  1. import java.util.Scanner;
  2. /**
  3. * @author LLJ
  4. * @time 2020-5-30 下午10:01:48
  5. * @Description java语言设计求最大公约数出现的问题和解决方案
  6. */
  7. public class ZuiDaGongYueShu {
  8. public static void main(String[] args) {
  9. Scanner scanner = new Scanner(System.in);
  10. System.out.println("请输入一个整数A:");
  11. int a = scanner.nextInt();
  12. System.out.println("请输入一个整数B:");
  13. int b = scanner.nextInt();
  14. int bigNumber = 1;//临时初始定义最大公约数为0
  15. int number = 0;//初始定一个数,为了后续赋值(比较)使用
  16. int[] aArray = gongYueShu(a);//a的所有约数组成的数组
  17. int[] bArray = gongYueShu(b);//b的所有约数组成的数组
  18. for(int i = 0;i < aArray.length;i++){
  19. for(int j = 0; j< bArray.length;j++){
  20. if(aArray[i] == bArray[j]){//判断是否是共同的约数,是的话,则把该值 赋值给number
  21. number = aArray[i];//暂时把相等的约数赋值给number
  22. if(number > bigNumber){//如果number大于临时定义的最大公约数bigNumber,则把number的值赋值给bigNumber
  23. bigNumber = number;
  24. }
  25. }
  26. }
  27. }
  28. System.out.println("最大公约数为:"+bigNumber);
  29. }
  30. /**
  31. * 求一个数的所有约数
  32. * @Time 2020-5-30 下午10:19:14
  33. * @param number
  34. * @return int[]
  35. */
  36. public static int[] gongYueShu(int number){
  37. int[] array = new int[number/2+1];//初始定义一个数组,为了存约数
  38. int j = 0;//随意定义的
  39. for(int i = 1; i <= number/2+1;i++){//number/2+1,是为了防止特殊情况出现,比如4的约数为(1,2,4),6的约数为(1,2,3,6)
  40. if(number%i == 0){//代表是约数
  41. array[j] = i;
  42. j++;//如果是约数,则j+1
  43. }
  44. }
  45. return array;
  46. }
  47. }

发表评论

表情:
评论列表 (有 0 条评论,160人围观)

还没有评论,来说两句吧...

相关阅读

    相关 如何用C语言公约数

    方法一: 辗转相减法:用两个数中较大的数减去较小的数一直减到两个数相等为止 最大公约数M一定能能够被两个数同时整除即a=x\M,b=y\M故两个数相减之后的结果=M\z

    相关 公约数

    求最大公约数 \\一.题目内容 \\运行最大公约数的常用算法,并进行程序的调式与测试,要求程序设计风格良好,并添加异常处理模块。 \\二.算法设计 \\四种函