programming-examples/java/_Basics/ArithmeticProgression.java

45 lines
1.5 KiB
Java
Raw Normal View History

2019-11-15 12:59:38 +01:00
package com.jwetherell.algorithms.sequence;
/**
* Compute the result of adding a sequence of numbers from N (startNumber) to N+X (startNumber+numberOfNumbersToCompute)
* <p>
* https://en.wikipedia.org/wiki/Arithmetic_progression
* <br>
* @author Justin Wetherell <phishman3579@gmail.com>
*/
public class ArithmeticProgression {
/**
* Compute the result of adding X (numberOfNumbersToCompute) together starting at N (startNumber).
* <p>
* e.g. result = N + (N+1) + (N+2) + (N+3) + ..... + (N+X)
*/
public static final long sequenceTotalUsingLoop(int startNumber, int numberOfNumbersToCompute) {
int start = startNumber;
int length = numberOfNumbersToCompute;
long result = 0L;
while (length > 0) {
result += start++;
length--;
}
return result;
}
/**
* Compute the result of adding X (numberOfNumbersToCompute) together starting at N (startNumber) using triangular numbers.
* <p>
* e.g. result = N + (N+1) + (N+2) + (N+3) + ..... + (N+X)<br>
* <br>
* https://en.wikipedia.org/wiki/Triangular_number
*/
public static final long sequenceTotalUsingTriangularNumbers(int startNumber, int numberOfNumbersToCompute) {
// n*(n+1)/2
final int start = startNumber;
final int length = numberOfNumbersToCompute;
long result = length * (length + 1) / 2;
result += (start - 1) * length;
return result;
}
}