/**
* En klass som ber användaren om ett positivt heltal
* och striver ut 3N+1-serien för det heltalet.
*/
public class ThreeNPlusOne {
public static void main(String[] args) {
int n = getPositiveInt();
printSeries(n);
}
/**
* Tvingar användaren att ge ett positivt heltal.
* @return Ett positivt heltal från användaren.
*/
public static int getPositiveInt() {
int n = getInt();
while (n < 1) {
n = getInt();
}
return n;
}
/**
* Ber användaren att skriva in ett positivt heltal.
* Använder TextIO för att läsa in talet.
* Kontrollerar inte om heltalet är positivt.
* @return Ett heltal.
*/
public static int getInt() {
System.out.println("Skriv ett positivt heltal!");
return TextIO.getInt();
}
/**
* Skriver ut 3N+1-serien för det angivna heltalet.
* @param n Talet serien ska börja på. Måste vara positivt.
*/
public static void printSeries(int n) {
System.out.println(n);
while (n != 1) {
n = nextN(n);
System.out.println(n);
}
}
/**
* Ger nästa tal i 3N+1-serien
* @param oldN Talet att utgå ifrån
* @return Talet efter oldN
*/
public static int nextN(int oldN) {
int newN;
if (oldN % 2 == 0) {
newN = oldN / 2;
} else {
newN = (oldN * 3) + 1;
}
return newN;
}
}