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