Среднее значение неизвестных номеров в JAVA - PullRequest
0 голосов
/ 21 июня 2020

Я ищу идеальные числа от 1 до 10000 и среднее арифметическое c результатов. Приведенный ниже код предоставляет идеальные числа (6, 28, 496, 8128), но не может найти решения для их среднего. Любая помощь будет принята с благодарностью.

public static void main(String[] args){
int min = 1; 
int max = 10000;

for (min = 1; min <= max; min++) { 
    int sum = 0;
    for (int e = 1; e < min; e++) {
        if ((min % e) == 0) {
            sum += e;
        } 
    }  
    if (sum == min){           
        System.out.println(sum);
    }          
}      

}

Ответы [ 2 ]

1 голос
/ 21 июня 2020

Для расчета среднего результата можно использовать потоки:

public static void main(String[] args) {

    int min = 1;
    int max = 10000;

    List<Integer> avg = new ArrayList<>();

    for (min = 1; min <= max; min++) {
        int sum = 0;
        for (int e = 1; e < min; e++) {
            if ((min % e) == 0) {
                sum += e;
                avg.add(e);
            }
        }
        if (sum == min) {
            System.out.println(sum);
        }

    }
    
    //Rounded average result:
    System.out.println("The result average is: " + Math.round(avg.stream()
                                                       .mapToInt(Integer::intValue)
                                                       .average()
                                                       .getAsDouble()));
    
    //Or not rounded average result with two digits precision:
    System.out.printf("The result average is: %.2f \n", avg.stream()
                                                         .mapToInt(Integer::intValue)
                                                         .average()
                                                         .getAsDouble());       
    
}
0 голосов
/ 21 июня 2020

Я давно что-то делал в Java, но это должно помочь. Среднее значение - это сумма всех элементов, деленная на количество элементов. Итак, нам нужен счетчик, чтобы подсчитать все элементы, которые go, в сумму и разделить ее в конце.

public class HelloWorld {

public static void main(String[] args){
int min = 1; 
int max = 10; // reduced max for testing
int count = 0;
double average;

    for (min = 2; min <= max; min++) { // start loop at 2
        int sum = 0;
        count = 0;
        for (int e = 1; e < min; e++) {
            if ((min % e) == 0) {
                sum += e;
                count = count +1;
            } 
        }
        if(count == 0) { // catch problems if count == 0
          System.out.println(min);
          average = -1;
        }
        else
          average = sum / count;
        System.out.println(average);
        if (sum == min){
            System.out.println(sum);
        }          
    }      
}}
...