Erklärung eines Programms

Schon, aber es ist
0: 21
1: 10
2: 18

Und nicht
0: 21
1: 18

wie von dir angegeben.

Aber ab sofort nur noch Auskunft gegen Weg.

cwriter
 
Tikorz, du musst dir deinen Code und cwriters Beiträge auch schon aufmerksam durchlesen.

In Mathe:
5 / 2 = 2 Rest 1
In C:
5 / 2 = 2
5 % 2 = (Rest) 1 = 1

(2 * 2 + 1 = 5) <- Umkehrung

Bei diesem Code wird nun if( n % 2 != 0) geprüft, also eigentlich if(n % 2 == 1). Und das heisst: Falls n ungerade ist.

In dem zweiten Code steht nirgendwo n % 2, sondern einmal n % 3 und einmal n % 4.

Gruß Technipion
 
Ich verstehe die zweite if abfrage nicht :/
Also nochmal
n=41
n>2? Ja
n ungerade? Ja
n/2 = 21

n= 21
n>2 ? Ja
n ungerade ? Ja
n/2 = 10

n=10
n>2 ? Ja
n ungerade? Nein
n = ( 10 -1 ) * 2
n = 18 ?
Hier ist der Fehler anscheinend ?
 
Hier ist der Fehler anscheinend ?
Bis jetzt stimmt es, aber aus Versehen.

Die Abfrage ist auf Modulo 3, nicht 2.
21 ist schon ungerade, aber das ist nicht gefragt. Gefragt ist, ob 21 durch 3 teilbar ist.

n % 3 == 0 => 21 / 3 = 7 R 0
(Anders gesagt: (n/ 3) * 3 == n)

Und ganz allgemein:

x % y == r <=> (x / y) * y == x + r
(Bedenke, dass Computerrechnungen in Division nicht Assoziativ / Distributiv sind!)

Aus Versehen stimmt deine Folge aber soweit.
Aber 2 Fehler auf 6 Rechnungen? Meinst du das jetzt ernst?
n beginnt mit 42, nicht 41.

Gruss
cwriter
 
Ich komme ab dann nicht mehr weiter warum ist dieses if unter else ?

Warte neuer Kommentar lasst mich kurz noch überlegen !
 
So die Fortsetzung weiß ich jetzt aber nochmals frage bei 18 % 4 kommt 4,5 raus runde ich immer ab ?
 

Anhänge

  • F556EE37-0852-4C66-8EFA-9EA0DD49B023.jpeg
    F556EE37-0852-4C66-8EFA-9EA0DD49B023.jpeg
    88,4 KB · Aufrufe: 5
Zurück