编写一个程序来汇总1到1000之间的所有整数,它们可以被13,15或17整除,但不能被30整除

时间:2014-08-04 05:41:37

标签: java while-loop conditional-statements

这是我的代码,我不知道下一步该做什么我是初学者

        int number = lb;
        while(number <= ub){
            if (number % 7 == 0 && number % 15 == 0 && number % 17 == 0 && number % 30 != 0 ){
                sum+= number;       

            }
            number++;               
        }
        System.out.println("Answer: " + sum);
    }

}

4 个答案:

答案 0 :(得分:3)

使用最新版本Java 8在一行中完成:

package com.example;

import static java.util.stream.IntStream.rangeClosed;
import static java.lang.System.out;

public class Main {
    public static void main(String[] args) {
        out.println(rangeClosed(1, 1000)
                   .filter(n -> n % 13 == 0 || n % 15 == 0 || n % 17 == 0)
                   .filter(n -> n % 30 != 0)
                   .sum());
    }
}

答案 1 :(得分:2)

你必须做这样的事情

    int sum=0;
    for(int i=0;i<1000;i++){ // iterate from 0 to 1000
        if ((i % 13 == 0 || i % 15 == 0 || i % 17 == 0) &&i % 30 != 0 ){
           // take numbers divide by 13 or 15 or 17 which not divide by 30
           sum=sum+i; // adding that number to current sum
        }
    }
    System.out.println("Answer: " + sum); // final sum

Out put:

    Answer: 76795

答案 2 :(得分:1)

如果我理解你的问题,它应该像

一样简单
int sum = 0;
// from 1 to 1000
for (int num = 1; num <= 1000; num++) {
  if (num % 30 == 0) {
    continue; // If it's divisible by 30, skip it.
  }
  if (num % 13 == 0 || num % 15 == 0 || num % 17 == 0) {
    sum += num; // If it's divisible by 13 or 15 or 17 add it to sum.
  }
}
System.out.printf("sum = %d%n", sum);

输出

sum = 76795

答案 3 :(得分:0)

int number = 0b1; //the proper way to start a binary number
            int sum = 0;
while(number <= 1000){
 if ((number % 13 == 0 || number % 15 == 0 || number % 17 == 0) && number % 30 != 0 ) {
  sum+= number;

   }
 number++;
}
 System.out.println("Answer: " + sum);

在问题中,您说数字可以被13或15或17整除而不是30,所以将相同的逻辑应用于if语句。这会给你正确的结果。

答案:76795