class GeometricProgression {
public static void main
(String[] args
) { final int[] a = new int[] { 1, 2, 3, 6, 18, 22 };
geoProgression(a);
}
private static void geoProgression(int[] a) {
// loop to all elements
for (int i = 0; i < a.length - 3; i++) {
int element = a[i];
for (int j = i + 1; j < a.length; j++) {
int target = a[j];
if (target % element == 0) {
int r = target / element;
int possibleNext = r * target;
int k = j + 1;
// find out if possible next exists
while (k < a.length) {
int pp = a[k++];
if (pp == possibleNext) {
System.
out.
println(element
+ " " + target
+ " " + possibleNext
); break;
}
}
}
}
}
}
}
Y2xhc3MgR2VvbWV0cmljUHJvZ3Jlc3Npb24gewoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBmaW5hbCBpbnRbXSBhID0gbmV3IGludFtdIHsgMSwgMiwgMywgNiwgMTgsIDIyIH07CiAgICAgICAgZ2VvUHJvZ3Jlc3Npb24oYSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBnZW9Qcm9ncmVzc2lvbihpbnRbXSBhKSB7CiAgICAgICAgLy8gbG9vcCB0byBhbGwgZWxlbWVudHMKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGEubGVuZ3RoIC0gMzsgaSsrKSB7CiAgICAgICAgICAgIGludCBlbGVtZW50ID0gYVtpXTsKICAgICAgICAgICAgZm9yIChpbnQgaiA9IGkgKyAxOyBqIDwgYS5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgaW50IHRhcmdldCA9IGFbal07CiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICUgZWxlbWVudCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgaW50IHIgPSB0YXJnZXQgLyBlbGVtZW50OwogICAgICAgICAgICAgICAgICAgIGludCBwb3NzaWJsZU5leHQgPSByICogdGFyZ2V0OwogICAgICAgICAgICAgICAgICAgIGludCBrID0gaiArIDE7CiAgICAgICAgICAgICAgICAgICAgLy8gZmluZCBvdXQgaWYgcG9zc2libGUgbmV4dCBleGlzdHMKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoayA8IGEubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBwcCA9IGFbaysrXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBwID09IHBvc3NpYmxlTmV4dCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGVsZW1lbnQgKyAiICIgKyB0YXJnZXQgKyAiICIgKyBwb3NzaWJsZU5leHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0=