Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
gf_informatik:algorithmen_ii [2026-04-17 07:03] – [Aufgabe B3: Primfaktorzerlegung] hofgf_informatik:algorithmen_ii [2026-04-17 11:24] (aktuell) – [Auftrag zu Primzahlen] hof
Zeile 16: Zeile 16:
    * Teil 3: Schreibe eine Funktion `max3(a, b, c)`, die das Maximum von **drei** Zahlen zurückgibt. _Verwende dazu die `max2` Funktion!_    * Teil 3: Schreibe eine Funktion `max3(a, b, c)`, die das Maximum von **drei** Zahlen zurückgibt. _Verwende dazu die `max2` Funktion!_
  
-<nodisp 1> +<html><bottom-exercise id="max"> 
-++++Lösung| +<script type="text/x-starter"> 
-<html><bottom-editor>+def max2(a, b): 
 +    """Gibt das Maximum von a und b zurück.""" 
 + 
 +def max3(a, b, c): 
 +    """Gibt das Maximum von a, b und c zurück.""" 
 +     
 +print(max2(5, 3)) 
 +print(max3(1, 2, 3)) 
 +</script
 +<script type="text/x-test"> 
 +assert max2(5, 3) == 5 
 +assert max2(5, 5) == 5 
 +assert max2(3, 5) == 5 
 + 
 +assert max3(1, 2, 3) == 3 
 +assert max3(3, 2, 1) == 3 
 +assert max3(1, 3, 2) == 3 
 +</script> 
 +<script type="text/x-solution">
 def max2(a, b): def max2(a, b):
 +    """Gibt das Maximum von a und b zurück."""
     if a > b:     if a > b:
         return a         return a
Zeile 26: Zeile 45:
  
 def max3(a, b, c): def max3(a, b, c):
 +    """Gibt das Maximum von a, b und c zurück."""
     return max2(max2(a, b), c)     return max2(max2(a, b), c)
  
 print(max3(int(input('a')), int(input('b')), int(input('c')))) print(max3(int(input('a')), int(input('b')), int(input('c'))))
-</bottom-editor></html> +</script> 
-++++ +</bottom-exercise></html> 
-</nodisp>+
 === Aufgabe A2: Sortieren === === Aufgabe A2: Sortieren ===
  
Zeile 282: Zeile 302:
 <html><bottom-exercise id="is-prime" session="primes"> <html><bottom-exercise id="is-prime" session="primes">
 <script type="text/x-starter"> <script type="text/x-starter">
-import math 
- 
 def is_divisor(dividend, divisor): def is_divisor(dividend, divisor):
     """Gibt True zurück, falls divisor ein ganzzahliger Teiler von dividend ist, sonst False."""     """Gibt True zurück, falls divisor ein ganzzahliger Teiler von dividend ist, sonst False."""
Zeile 335: Zeile 353:
    * Primfaktorzerlegung ist extrem wichtig z.B. für Verschlüsselungsalgorithmen    * Primfaktorzerlegung ist extrem wichtig z.B. für Verschlüsselungsalgorithmen
    * Schreibe eine Funktion `prime_factors(x)`, die eine Zahl x entgegennimmt und deren (geordnete) Primfaktoren von x ausgibt.    * Schreibe eine Funktion `prime_factors(x)`, die eine Zahl x entgegennimmt und deren (geordnete) Primfaktoren von x ausgibt.
- 
-<nodisp 1> 
-++++Lösung:| 
-Mit den Funktionen `is_prime` und `is_divisor` von oben ([[https://wtp.ethz.ch/#?code=NobwRAdghgtgpmAXGGUCWEB0AHAnmAGjABMoAXKJMNGbAewCcyACVMgCwB0Jnvi4AZszQBnAPrE0AN1GMAFJJn8IxAs0WyGASkTdm-3mE5GwAcTQAjFgBUGAVzjMAXnYYAfgMYBrNQHc4EDwaIozMcBjMAOZQEE5OUOwANmiRcAzM1uGJacxSdEHSaMrEwiJkaiEQZcwAYlCJInCYxi1GPAYMcGSuBUoBJQCk6oUh6QC8Y8wADHp8gqVi2Aw0cHIQOnoGrcbmVhn2ji7u3moC9Q3MPOEQjgAKyzDxSaXlzJXVdQ1N220GwkI8AA8zAATLp2n99J1ugweJ9Gpt9CxJiDEcwAMTMACiImYnTQHnYrwsomcrmYAHVXE44IlcvlLmTmGQ4GUAswALRRAAnFkcrLCGHZkQYADeRI1OjxMmhsukWCF1FAJWjMWQAFQAD2YE0ualIgVYbglLOY2q82SF6UaEXquKpDBpiTWWmYdhUzF8aHS7G5ZBZPG1fPxZFxqQE7uUzQhnvYsscLEBkzY7EwIgAjkwXeDIQY0EJRBIRvIIGoyBsY7n9JiKd7mOwoHyrkLpVkcuHI-yOQA-Zhea53B5PRJqPn9ALRquQ6E9Wp2uBov7I5nMADUzAAjKrmABpAet-PpDsqLu9r0-xvsgfMe40YcAQjRM9h-wcaLmALgmrIiweq3WOZbCYOyWCwkiOBA3KEmUIripKg53gkdKwRKOR2oyRyeF4zTAb8Bg3N-OqMuuW4xr4cbZJcdAsIWSwrGsX7loBuYEcurFrpuT5dLOrGzCeQh0fAYhnB4ZCMCI2bvrhuxgWgCEwBydReGJUr0jwPC2nYAhsik47pDUdCJKkZLHNhPxoiJKlESC1bMAI3rVIJC4xp0qAYPw4yXNuAAihT8IyFi4My7COBgHidMqGCRMwTmXHYMDBri7pkLKnqOBFhKbpOBjkfGeJwG5J7pL2G7MZCmIGekcBQJlTn6n5CYhflhUecwyrMIk-TRe1HCOLFoiLgYmJQMMMijNlua5ZRhbBPIrnoEVpw1SpFZTn883uTkkwbUVzAAPR2ctjCDbmdEQGQciWYwWgneVzC4HJiQlFdDB8VOmI7a1HgxFRHVdTkfKjUUcAlIFh2iaEPbMgwQVehwwUQYxMV_hNkIvURrG_vRL03Tw3BOcJR0MBJGAXRg2B2BdWjU2AAC-AC6QA&layout=%5B%22Editor%22%2C%22Console%22%5D|hier in WTP]]): 
  
 <html><bottom-exercise id="prime-factors" session="primes"> <html><bottom-exercise id="prime-factors" session="primes">
Zeile 344: Zeile 358:
 def prime_factors(n): def prime_factors(n):
     """Gibt die Prim-Faktoren von n in aufsteigender Folge zurück."""     """Gibt die Prim-Faktoren von n in aufsteigender Folge zurück."""
-</script> 
-<script type="text/x-test"> 
-assert prime_factors(10) == [2, 5] 
-assert prime_factors(413) == [7, 59] 
 </script> </script>
 <script type="text/x-solution"> <script type="text/x-solution">
 +import math
 +
 +def is_prime(n):
 +    """Gibt True zurück, falls n eine Primzahl ist, sonst False."""
 +    if n < 2:
 +        return False
 +    t = 2
 +    while t <= math.sqrt(n):
 +        if n % t == 0:
 +            return False
 +        t = t + 1
 +    return True
 +
 def next_prime(n): def next_prime(n):
     """Gibt die nächstgrössere Primzahl grösser als n zurück."""     """Gibt die nächstgrössere Primzahl grösser als n zurück."""
Zeile 365: Zeile 388:
         # For each prime, divide the remainder as long as the prime is         # For each prime, divide the remainder as long as the prime is
         # a divisor.         # a divisor.
-        while is_divisor(remainderfactor):+        while remainder factor == 0:
             remainder = remainder / factor             remainder = remainder / factor
             print(factor)             print(factor)
Zeile 384: Zeile 407:
    * Schreibe eine Funktion `ggT(x,y)`, die zwei Zahlen `x` und `y` entgegennimmt und den ggT der beiden zurückgibt.    * Schreibe eine Funktion `ggT(x,y)`, die zwei Zahlen `x` und `y` entgegennimmt und den ggT der beiden zurückgibt.
  
-<nodisp 1+<html><bottom-exercise id="gcd"
-++++Lösung:| +<script type="text/x-starter"> 
-<html><bottom-editor>+def ggt(a, b): 
 +    """Berechnet den grössten gemeinsamen Teiler von a und b.""" 
 +</script> 
 +<script type="text/x-test"> 
 +assert ggt(15, 10) == 5 
 +assert ggt(544, 391) == 17 
 +</script> 
 +<script type="text/x-solution">
 def ggt(a, b): def ggt(a, b):
     """Berechnet den grössten gemeinsamen Teiler von a und b."""     """Berechnet den grössten gemeinsamen Teiler von a und b."""
Zeile 396: Zeile 426:
  
 print(ggt(544, 391)) print(ggt(544, 391))
-</bottom-editor></html+</script> 
-++++ +</bottom-exercise></html>
-</nodisp>+
  
  
Zeile 406: Zeile 435:
    * Schreibe eine Funktion `wurzel(x)`, die die Wurzel von `x` auf `0.0001` genau berechnet.    * Schreibe eine Funktion `wurzel(x)`, die die Wurzel von `x` auf `0.0001` genau berechnet.
  
-<nodisp 1+<html><bottom-exercise id="heron"
-++++Lösung:| +<script type="text/x-starter"> 
-<html><bottom-editor>+def wurzel(n, precision=0.0001): 
 +    """Quadratwurzel nach Heron.""" 
 +</script> 
 +<script type="text/x-test"> 
 +assert 14.99 < wurzel(225) < 15.01 
 +assert 1.41 < wurzel(2) < 1.42 
 +</script> 
 +<script type="text/x-solution">
 def wurzel(n, precision=0.0001): def wurzel(n, precision=0.0001):
     """Quadratwurzel nach Heron."""     """Quadratwurzel nach Heron."""
Zeile 423: Zeile 459:
    
 print(wurzel(225)) print(wurzel(225))
-</bottom-editor></html+</script> 
-++++ +</bottom-exercise></html>
-</nodisp>+
  
  
  • gf_informatik/algorithmen_ii.1776409421.txt.gz
  • Zuletzt geändert: 2026-04-17 07:03
  • von hof