微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

两个整数除数和

如何解决两个整数除数和

我写了这段代码,但结果我得到了错误的答案,我不知道为什么。 我必须得到 3 个整数 a,b,x 。然后找到 a,b 除数,如果除数的总和不超过 x,则为 res++,最后打印 res。

import java.util.Scanner;

public class testQuestion {
    public static void main(String[] args) {
        Scanner input = new Scanner(system.in);
        int a = input.nextInt();
        int b = input.nextInt();
        int x = input.nextInt();
        int[] resB = new int[b];
        int[] resA = new int[a];
        int res = 0;

        for (int i = 1; i <= a; i++) {
            if (a % i == 0)
                resA[i - 1] += i;
            if (b % i == 0)
                resB[i - 1] += i;
        }
        for (int i : resA) {
            if (i > 0)
                for (int j : resB) {
                    if (i + j <= x && j > 0) {
                        res++;
                    }
                }
        }
        System.out.println(res);
    }
}

解决方法

不确定这是否有帮助,似乎您有 2 个存储空间,A 和 B。通过循环 A,您可能会错过 B。示例 B 有 10 条记录,A 只有 1 条记录,而 A等于或小于 0 则不会循环。为确保这一点,循环 A 和 B 并检查它是否 >0。

-但是如果 A 为空,则不会循环 B。

    for (int i : resA) {
        for (int j : resB) {
           if(j > 0 && i > 0) {
             if (i + j <= x) {
                    res++;
             }
           }
        }
    }

更新

首先:通过删除 resB 来创建一个变量。离开 int[] resA = new int[a];

其次:循环A并加入resA

第三:循环B并检查除法。然后比较任何 B 与任何 A 的总和是否 > x。

第四:如果你想检查一个空的A应该让B加0,你可能会做出调整。或者,你可能根本不计算它。取决于你需要什么。如果为空,可能会对 B 执行相同的操作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。