Я новичок в java. Одна из проблем моего преподавателя заключалась в следующем:
- Учитывая диапазон от 1 до некоторого заданного максимального целого числа n, который должен быть делимым на некоторое заданное целое число q, тогда:
а. Распечатайте сумму каждой партии чисел q; и
б. Распечатайте сумму всех целых чисел от 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 петли, с которыми я боролся. но ОДИН ЛОП? Я не знаю, как улучшить код. Пожалуйста, помогите мне.