Java - 3 个或更多不同的数字

标签 java arrays distinct-values

在我的代码中,用户输入他们想要测试的数字,然后输入数字。如果一个数字可以除以 3 个不同的数字,则会打印“1”。否则,它会打印“0”。当我运行我的代码时,它只打印“0”。我尝试修复一些括号,看看语法中的某个地方是否困惑。

            int distinct = 0;
            int T = input.nextInt();
            int [] nums = new int [T];

            for (int n : nums) {
                distinct = 0;
                n = input.nextInt();
                for (int m = nums.length; m == 0; m--) {
                    if (n % m == 0) {
                        distinct++;
                    }
                }
                if (distinct < 3) {
                    System.out.println("0");
                }
                else
                    System.out.println("1");
                }
            }
        }

“三个不同的数字”是指像“4”这样的数字,它可以被“4、2 和 1”整除。

当我输入这个时:

3
2 3 4

它返回:

0
0
0

当它应该返回时:

0
0 
1

最佳答案

在 for 循环中,您可以使用 int m = nums.length 启动变量。

由于nums的长度在开始时被用户定义为3,所以在检查所有小于此的正整数之前,您检查的第一个因子是3。因此,对于 n = 4,您检查 3、2 和 1;只有 2 和 1 是因数,所以不同的就是 2。我怀疑这应该是 int m = n;

for (int m = n; m == 0; m--) {
    if (n % m == 0) {
        distinct++;
    }
}

假设您忽略负整数(因为这意味着可以考虑负整数),唯一失败的情况是 n 为 1 或 n 为素数时; 1 和 n 本身始终是一个因子。因此,您可以忽略对这些值的检查。

关于Java - 3 个或更多不同的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48837351/

相关文章:

java - 使用 putExtra 将值传递给 Intent 服务

java - 如何在java中创建一个对象的五个实例,以便当引用该对象时,这五个实例应该像对象池一样?

java - 片段说明字节数组到端口号

PHP/MySql 用数组搜索数组

javascript - 如何从数组添加到 <SVG> 元素

mysql - 返回列名及其在 MySQL 中的不同值的计数

java - 长时间运行的 Tomcat 进程的类加载器中的问题

java - Java正则表达式

sql - 查询数据库以获取不同的值并根据条件聚合数据

iphone - 如何在iPhone中通过核心数据插入不同的记录?