2015-08-09 2 views
1

Так я работаю над этой проблемой, когда пользователь входит в число X и результат является суммой всех чисел от 0 до X, рассчитанных таким образом:Добавление номера и вычитая кратные

  1. кратные 7 и кратные из 11 не включены в сумму.
  2. но кратны как 7 и 11 включены напр: 77

, например:

пользователь вводит X >> 80

общая сумма >> (0 + 1 + 2 + 3 + .... 77) - (7,11,14,21,22 .... 77) + (77) = результат

import java.util.Scanner; 
    public class testadd { 
     public static void main(String[] args) { 
      Scanner keyboard = new Scanner(System.in); 
      System.out.print("Please the number greater than 77"); 
      // int a = 0; 
      int b = keyboard.nextInt(); 
      int sum = 0; 

      int s = Math.min(0, b); 
      int e = Math.max(0, b); 

      System.out.println(s); 
      System.out.println(e); 
      int x=0; 
      for(int i=1; i<e; i++){ 
       if(i%7 ==0 || i%11 ==0){ 
        x=x+i; 
        System.out.println(x + " values of x"); 
       } 
      } 

      while (s <= e) { 
       sum += s; 
       s++; 
      } 

      System.out.print("The sum of the numbers between " + 0 + " and " + b + " is " + sum); 
     } 
    } 
+0

Почему вы используете '' Math.min' и Math.max' ? Если 'b' больше 77, то' Math.min (0, b) 'всегда 0, поэтому нет причин усложнять вещи, используя' Math.min'. Точно так же для 'Math.max', но я дам вам понять, что будет 'e'. – ajb

ответ

2

Вам нужен всего один цикл, чтобы просмотреть все номера от 1 до e. Элегантный способ проверить для чисел, которые делятся на 7 или 11, но не так, чтобы использовать ^ (эксклюзивные или) оператора:

long sum = 0; 
for (int i = 1; i <= e; ++i) { 
    if (!((i % 7 == 0)^(i % 11 == 0))) { 
     sum += i; 
    } 
} 
2

Вы не включая числа, делящиеся на 77 в вашей s гм. Ваш для контура должен выглядеть следующим образом (вы не нуждаетесь в то время цикла):

 for (int i=1; i<e; i++) { 
      if((i%77 == 0) || (i%7 !=0 && i%11 !=0)) { 
       x=x+i; 
       System.out.println(x + " values of x"); 
      } 
     } 

т.е. добавить i в общей сложности, если либо i делится на 77 или i является не делится на 7 и 11.

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