栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

更相减损术——Java实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

更相减损术——Java实现

Java作业——求最大公约数——更相减损术

虽然算法简单,但是因为很不熟练,所以一开始的代码有较多错误,以下是经过多次修改后的代码。

代码:


package homework3.GreatestCommonDivisor;

import java.util.Scanner;

public class subsubAlgorithm {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入两个数字:");
        int a = sc.nextInt();
        int b = sc.nextInt();
        subsub(a, b);
//        if(a % 2 == 0) { a = a / 2; }
//        if(b % 2 == 0) { b = b / 2; }
    }

    public static void subsub(int a, int b) {
        int i = 0;
        int c = 0;

        for(; a%2 == 0 && b % 2 == 0; i ++) {
            a = a / 2;
            b = b / 2;
        }        //更相减损术第一步:若二者为偶数,则除2,并记录被2除的次数

        while(a != b) {
            if(a > b) {
                a -= b;
            } else {
                b -= a;
            }
        }        //主体,大数减小数,循环,直到两数相等为止

        if(i != 0) {
            c = b * i * 2;
        }else {
            c = b;
        }        //增加了条件判断,防止i==0的情况出现,从而得出公约数为0的错误结果

        System.out.println("最大公约数 = " + c);
    }
}

本代码验证了:

a = 996, b = 700

a = 1995, b = 615

a = 81, b = 999

等情况,似乎均可得出正确结果。但是算法仍不完美,欢迎验证并告诉我。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/362262.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号