Лучший способ расчета суммы четных целых - PullRequest
1 голос
/ 01 июня 2011

Я пытаюсь написать программу, которая предложит пользователю ввести int, который выше или равен 2. Из этого ввода программа должна затем вычислить и вывести сумму всех четных целых чисел от 2 до введенного значения.int.Он также должен выдавать сообщение об ошибке, если введенное значение int меньше 2. Я создал для него программу, которая работает, но мне просто интересно, если вы, ребята, могли бы найти лучший способ сделать это?Я уверен, что есть, но я не могу найти способ, который работает!

Вот что я сделал:

import java.util.Scanner;

public class EvenSum {


         public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);

    System.out.println("Enter an integer which is above 2.");
    int number = scan.nextInt();
    int divnum = number / 2;
    int divnum2 = divnum + 1;
    int sumofeven = divnum * divnum2;

    if(number >= 2)
    System.out.println("The sum of the even integers between the number is "+
            sumofeven);
    else
        System.out.println("Invalid number entered.");


    }

}

Ответы [ 4 ]

3 голосов
/ 01 июня 2011

Примечание: не используйте этот пример в контексте real , это неэффективно. Это просто показывает более чистый способ сделать это.

    // Check the input.
    if (number >= 2)
        System.out.println(sum(number));
} 

// Will find the sum if the number is greater than 2.
int sum(int n) {
    return n == 2 ? n - 2 : n % 2 == 0 ? n + sum(n - 2) : sum(n - 1);
}

Надеюсь, это поможет. О, кстати, метод sum рекурсивно добавляет числа.

Извините , но мне пришлось немного отредактировать ответ. Возможно, еще есть возможности для улучшения.

2 голосов
/ 01 июня 2011

Почему это с петлей? Вы действительно можете рассчитать это. Пусть X будет числом, которое они выберут. Пусть N будет наибольшим четным числом <= X. (N ^ 2 + 2 * N) / 4 будет вашим ответом. </p>

Редактировать: только что увидел ответ выше меня. Он прав. Я дал функцию, я полагаю.

1 голос
/ 01 июня 2011

Зачем вообще использовать цикл? Вы вычисляете сумму:

2 + 4 + ... n, where n is a positive even number.

Это очень простая арифметическая прогрессия.

0 голосов
/ 01 июня 2011
public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);

    System.out.println("Enter an integer which is above 2.");

    int number = scan.nextInt();

    if (number >= 2) {
        int sumofeven = 0;
        for (int i = 2; i <= number; i += 2) {
            sumofeven += i;
        }
        System.out.println("The sum of the even integers between the number is " + sumofeven);
    } else {
        System.out.println("Invalid number entered.");
    }
}
...