添加数字并减去倍数

时间:2015-08-09 07:04:01

标签: java loops

所以我正在解决这个问题,即用户输入数字X,结果是以这种方式计算的0到X之间所有数字的总和:

  1. 7的倍数和11的倍数不包括在总和中。
  2. 但包含7和11的倍数,例如:77
  3. 例如:

    用户输入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);
            }
        }   
    

2 个答案:

答案 0 :(得分:2)

您的总和不包括可被77整除的数字。你的for循环应该是这样的(你不需要while循环):

        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可以被77整除,或者i 可以被i7整除,请将11添加到总计中。< / p>

答案 1 :(得分:2)

您只需要一个循环来覆盖从1e的所有数字。检查可被711整除但不能被^整除的数字的优雅方法是使用long sum = 0; for (int i = 1; i <= e; ++i) { if (!((i % 7 == 0) ^ (i % 11 == 0))) { sum += i; } } (独占或)运算符:

import pandas as pd                                                                           

df = pd.DataFrame.from_dict({"State": ["ny", "or", "ny", "nm"],                     
                             "Counts": [100,300,200,400]})

list_new = df.groupby("State")["Counts"].apply(list).tolist()
print(list_new)

[[400], [100, 200], [300]]