2016-10-07 4 views
-4

У меня есть задание создать идеальный калькулятор чисел, но я действительно не понимаю, как это сделать. Я нашел несколько примеров здесь, но, очевидно, не хочу просто копировать, но мне трудно понять, для чего каждая часть.Идеальный поиск числа

Я знаю, что первый цикл For означает, что когда min меньше или равно 10000 для добавления 1, но почему следующая переменная, объявленная внутри цикла, вместе с тем, для чего «e». Предполагается ли, что «e» является проверкой идеальных чисел?

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); 
     }   
    }  
} 
+1

* вместе с тем, для чего 'e'. * Что вы думаете 'for (int e = 1; e

+0

Возможно, начните с уточнения точного определения «идеального числа», а затем посмотрите, что делает программа в этом контексте. – Stewart

+1

Идеальное число - это число, в котором все факторы (исключая себя) составляют число. Например, 6, потому что '1 + 2 + 3 = 6' –

ответ

2

В теории чисел perfect number положительное целое число, равное сумме своих собственных положительных делителей, то есть сумма его положительных делителей, исключая само число

Давайте разберем этот код down:

public static void main(String[] args){ 
// The lowest number we will check to see if it's perfect 
int min = 1; 
// The highest number we will check to see if it's perfect 
int max = 10000; 

// A loop to go over all numbers in the range to check which of them are perfect 
for (min = 1; min <= max; min++) { 
    // The sum of proper positive divisors for our number 
    int sum = 0; 
    // A loop to calculate the sum of positive divisors for our number, here 'e' will 
    // go from 1 to 'min-1' (because a perfect number excludes the number itself) 
    for (int e = 1; e < min; e++) { 
     // This if is true if the number if a proper divisor of our number ('min') 
     if ((min % e) == 0) { 
      // The number is a proper divisor so we add it to the sum of proper divisors 
      // for our number 
      sum += e; 
     } 
    } 
    // We finished checking all of our proper divisors for the number 'min' 
    if (sum == min){   
     // If this is is true, that means that the sum of all proper divisors 
     // for 'min' equals to 'min' -> 'min' is a perfect number, so we 
     // print it 
     System.out.println(sum); 
    }   
}  
+0

Обычно мне не нравятся комментарии в коде, объясняющие все, но это довольно четкое объяснение. +1 – nhouser9

+0

Спасибо за это! Я действительно надеялся, чтобы что-то прокомментировало это, к сожалению, ни один из других примеров, которые я мог найти, не имел комментариев. – bradacha

+0

Рад, что все ясно. Если бы этот ответ помог вам, пожалуйста, отметьте его как ответ на этот вопрос. –

Смежные вопросы