Java :: Aufgabe #157
3 Lösungen
Funktion über eine Natürliche Zahl
Anfänger - Java
von hollst
- 20.02.2017 um 09:02 Uhr
Man schreibe ein Funktion f(n) mit dem Definitionsbereich (n) und dem Wertebereich (f(n)) der natürlichen Zahlen.
Die Funktion f(n) sei wie folgt zu konstruieren:
1.) Schreibe die Zahlen 1 ... n in absteigender Reihenfolge nebeneinander: n, n - 1, n - 2 ... 5, 4, 3, 2, 1
2.) Wandle diese Zahlen in ihre binärer Darstellen ohne führende Nullen: n, n - 1, n -2 ... 101, 100, 11, 10, 1
3.) Entferne jetzt das Komma zwischen den Binärzahlen, die sich damit ergebende neue Binärzahl ist f(n).
Beispiel: f(6) => 6, 5, 4, 3, 2, 1 => 110, 101, 100, 11, 10, 1 => 11010110011101 = 13725 (dezimal).
Fragen: Welchen Wert hat f(99)?
Die Funktion f(n) sei wie folgt zu konstruieren:
1.) Schreibe die Zahlen 1 ... n in absteigender Reihenfolge nebeneinander: n, n - 1, n - 2 ... 5, 4, 3, 2, 1
2.) Wandle diese Zahlen in ihre binärer Darstellen ohne führende Nullen: n, n - 1, n -2 ... 101, 100, 11, 10, 1
3.) Entferne jetzt das Komma zwischen den Binärzahlen, die sich damit ergebende neue Binärzahl ist f(n).
Beispiel: f(6) => 6, 5, 4, 3, 2, 1 => 110, 101, 100, 11, 10, 1 => 11010110011101 = 13725 (dezimal).
Fragen: Welchen Wert hat f(99)?
Lösungen:
Ergebnis: f(99) => 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
=> 1100011, 1100010, 1100001, 1100000, 1011111, 1011110, 1011101, 1011100, 1011011, 1011010, 1011001, 1011000, 1010111, 1010110, 1010101, 1010100, 1010011, 1010010, 1010001, 1010000, 1001111, 1001110, 1001101, 1001100, 1001011, 1001010, 1001001, 1001000, 1000111, 1000110, 1000101, 1000100, 1000011, 1000010, 1000001, 1000000, 111111, 111110, 111101, 111100, 111011, 111010, 111001, 111000, 110111, 110110, 110101, 110100, 110011, 110010, 110001, 110000, 101111, 101110, 101101, 101100, 101011, 101010, 101001, 101000, 100111, 100110, 100101, 100100, 100011, 100010, 100001, 100000, 11111, 11110, 11101, 11100, 11011, 11010, 11001, 11000, 10111, 10110, 10101, 10100, 10011, 10010, 10001, 10000, 1111, 1110, 1101, 1100, 1011, 1010, 1001, 1000, 111, 110, 101, 100, 11, 10, 1
=> 11000111100010110000111000001011111101111010111011011100101101110110101011001101100010101111010110101010110101
00101001110100101010001101000010011111001110100110110011001001011100101010010011001000100011110001101000101100
01001000011100001010000011000000111111111110111101111100111011111010111001111000110111110110110101110100110011
11001011000111000010111110111010110110110010101110101010100110100010011110011010010110010010001110001010000110
00001111111110111011110011011110101100111000101111011010101101001001110010100011000011111110110111001011101010
01100011111010110011101
= 9223372036854775807 (dezimal)
=> 1100011, 1100010, 1100001, 1100000, 1011111, 1011110, 1011101, 1011100, 1011011, 1011010, 1011001, 1011000, 1010111, 1010110, 1010101, 1010100, 1010011, 1010010, 1010001, 1010000, 1001111, 1001110, 1001101, 1001100, 1001011, 1001010, 1001001, 1001000, 1000111, 1000110, 1000101, 1000100, 1000011, 1000010, 1000001, 1000000, 111111, 111110, 111101, 111100, 111011, 111010, 111001, 111000, 110111, 110110, 110101, 110100, 110011, 110010, 110001, 110000, 101111, 101110, 101101, 101100, 101011, 101010, 101001, 101000, 100111, 100110, 100101, 100100, 100011, 100010, 100001, 100000, 11111, 11110, 11101, 11100, 11011, 11010, 11001, 11000, 10111, 10110, 10101, 10100, 10011, 10010, 10001, 10000, 1111, 1110, 1101, 1100, 1011, 1010, 1001, 1000, 111, 110, 101, 100, 11, 10, 1
=> 11000111100010110000111000001011111101111010111011011100101101110110101011001101100010101111010110101010110101
00101001110100101010001101000010011111001110100110110011001001011100101010010011001000100011110001101000101100
01001000011100001010000011000000111111111110111101111100111011111010111001111000110111110110110101110100110011
11001011000111000010111110111010110110110010101110101010100110100010011110011010010110010010001110001010000110
00001111111110111011110011011110101100111000101111011010101101001001110010100011000011111110110111001011101010
01100011111010110011101
= 9223372036854775807 (dezimal)
Java-Code
import java.util.*; public class NatZahl { public static void main(String [] args){ System.out.print((long)f(99) + ( " (dezimal) ")); } public static double f(int n){ String Stringarray[] = new String[n]; for(int i = n; i > 0; i--){ if(i == n){ System.out.print("f(" + n + ") => " + i + ", "); } else if(i != 1 && i < n){ System.out.print(i + ", "); } else{ System.out.print(i + " => "); } } for(int i = n; i > 0; i--){ Stringarray[i-1] = Integer.toBinaryString(i); if(i != 1){ System.out.print(Stringarray[i-1] + ", "); } else{ System.out.print(Stringarray[i-1] + " => "); } } List<String> help = new LinkedList<>(); for(int i = n; i > 0; i--){ help.add(Stringarray[i-1]); } String binarywo = String.join("", help); System.out.print(binarywo + " = "); double erg = binToDec(binarywo); return erg; } public static double binToDec(String bin) { double dec = 0L; double pow = 1; for (int i = (bin.length() - 1); i >= 0; i--) { char c = bin.charAt(i); dec = dec + (Double.parseDouble(c + "") * pow); pow = pow * 2; } return dec; } }
Java-Code
import java.math.BigInteger; public class Funktion { public static void main(String[] args) { // Schritt 1+2 int fn = 12; String s = ""; for (int j = 1; j <= fn; j++) { s = Integer.toBinaryString(j) + s; } //Schritt 3 BigInteger res = BigInteger.ZERO; BigInteger ex = BigInteger.ONE; int oneORzero = -1; while (!s.equals("")) { oneORzero = Integer.valueOf(s.substring(s.length() - 1)); if (oneORzero == 1) { res = res.add(ex); } ex = ex.shiftLeft(1); s = s.substring(0, s.length() - 1); } System.out.println(res); } }
Soll das eine besondere Zahl sein?
Java-Code
import java.math.BigInteger; class natuerlicheZahl { public static void main (String[] args) { String f = ""; int n = 99; for(int i = n; i > 0; i--) { f = f.concat(Integer.toBinaryString(i)); } BigInteger dezimal = new BigInteger(f, 2); System.out.println("f: " + f); System.out.println("Dezimal: " + dezimal); } }