【问题标题】:Program does not print the correct sum value of prime numbers in a matrix程序不打印矩阵中素数的正确总和值
【发布时间】:2021-05-23 01:33:21
【问题描述】:

我是java语言的初学者。我的任务是创建一个矩阵,该矩阵根据矩阵中随机生成的数字计算所有素数的总和。但是,我的程序根本没有打印正确的值。我的代码似乎有什么问题?

public static void main(String[] args) {
    int arr[][] = new int[5][5];
    Random ran = new Random();

    System.out.println("Print matrix");
    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr.length; j++) {
            arr[i][j] = 10 + ran.nextInt(50 - 10 + 1);
            System.out.print(arr[i][j] + "\t");
        }
        System.out.println();
    }
    int sum = 0;
    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr.length; j++) {
            int num = 0;
            for (int k = 1; k <= arr[i][j]; ++k)
                if (arr[i][j] % k == 0)
                    num++;
            if (num == 2)
                sum = sum + arr[i][j];
        }
    }
    System.out.println("\nPrint the sum of prime no. in the matrix: " + sum);
}

输出:

Print matrix
33  11  41  43  38  
32  18  25  16  24  
40  16  11  18  11  
49  37  22  13  17  
10  45  30  13  37  

Print the sum of prime no. in the matrix: 234

正确的总和值应该是283 而不是234

【问题讨论】:

    标签: java matrix multidimensional-array primes


    【解决方案1】:

    49 不是素数 = 7 * 7 = 49

    对于问题中的输入,234 是正确答案。 11 + 41 + 43 + 11 + 11 + 37 + 13 + 17 + 13 + 37

    对于图像中的输入,预期的结果是正确的 11 + 47 + 19 + 17 + 41 + 29 + 37 = 201

    可能的修正

    1. 除非矩阵是方阵,否则最好使用内循环为j &lt; arr[i].length
    2. 质数检查只需要除法直到floor(sqrt(num))

    【讨论】:

      猜你喜欢
      • 2021-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-25
      • 1970-01-01
      • 2019-10-07
      相关资源
      最近更新 更多