Java 编写一个程序,对1到1000之间的所有整数求和,这些整数可以被13、15或17整除,但不能被30整除

Java 编写一个程序,对1到1000之间的所有整数求和,这些整数可以被13、15或17整除,但不能被30整除,java,while-loop,conditional-statements,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;

这是我的代码我不知道下一步该怎么做我完全是初学者

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

}
在问题中,你说的数字可以被13、15或17整除,而不是被30整除,所以对if语句应用同样的逻辑。那会给你正确的结果


回答:76795

你必须这样做

    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

如果我理解你的问题,它应该简单到

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);

使用最新版本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());
    }
}

可被13、15或17整除意味着您应该使用OR而不是ANDhint->| | is not&。您需要这种if。if数字%13==0 | |数字%15==0 | |数字%17==0&&number%30!=0{}…for循环可能会比while循环更清晰。数字%7==0表示什么?我现在已经更改了。谢谢你指出这一点。
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
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());
    }
}