我是java中的新手。一個從我的講師的問題是:修改解決方案以使用單個循環
- 給定一個範圍從1到一些指定的最大整數n,它必須是整除某個給定的整數Q,則:
一個。打印每批數字q的總和;和
b。打印出所有整數的1之和的最後一個號碼在該批次
示例: 對於n = 1000,Q = 50的程序將輸出:
Sum from 1 to 50: 1275
Sum from 1 to 50: 1275
Sum from 51 to 100: 3775
Sum from 1 to 100: 5050
Sum from 101 to 150: 6275
Sum from 1 to 150: 11325
Sum from 151 to 200: 8775
Sum from 1 to 200: 20100
Sum from 201 to 250: 11275
Sum from 1 to 250: 31375
Sum from 251 to 300: 13775
Sum from 1 to 300: 45150
Sum from 301 to 350: 16275
Sum from 1 to 350: 61425
Sum from 351 to 400: 18775
Sum from 1 to 400: 80200
Sum from 401 to 450: 21275
Sum from 1 to 450: 101475
我設法解決這個問題,下面是我的解決方案:
public class ProblemA001k {
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum1 = 0;
int sum2 = 0;
int maxN, divQ;
Scanner key = new Scanner(System.in);
System.out.println("Please enter the maximum value, n");
maxN = key.nextInt();
System.out.println("Please enter the divisor of n, q");
divQ = key.nextInt();
int p, i;
int q = divQ;
int newQ = 1;
for(int j = 0; j < maxN/q; j++) {
for(i = newQ; i <= divQ; i++) {
sum1 += i;
}
System.out.println("Sum from " + newQ + " to " + divQ + ":" + sum1);
for(p = 1; p <= divQ; p++) {
sum2 += p;
}
System.out.println("Sum from 1" + " to " + divQ + ":" + sum2);
System.out.println();
divQ += q;
newQ += q;
sum1 = 0;
sum2 = 0;
}
key.close();
}
}
現在有人告訴我,以便它僅使用一個循環來修改我的解決方案。 我在上面的代碼中有3個循環,即使當我嘗試只使用2個循環時,我掙扎着。但一個循環?我不知道如何改進我的代碼。請幫幫我。
只是一些數學,找到從1到X的總和,不需要循環,'X *(X + 1)/ 2'會做我t;) – AxelH
謝謝你實際向我們展示你自己的一些工作,而不是隻提交講師給你的問題。我們在這裏看不到太多:) –
@AxeIH你能用一個嗎? ,我不得不使用ONE循環。 –