Matroids Matheplanet Forum Index
Moderiert von matph
Informatik » Programmieren » Python: Primteiler-Programm
Druckversion
Druckversion
Antworten
Antworten
Autor
Schule Python: Primteiler-Programm
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2056
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2020-08-04


Kombinator-Frage

Das Programm läuft, die Ausgabe sieht so aus:

Nr: 1 Teiler 17 oft 29 Sum 29
Nr: 2 Teiler 7 oft 71 Sum 100
Nr: 3 Teiler 3 oft 166 Sum 266

Nr.1 Paar (17, 7) Prod 119 oft 4 Sum 4
Nr.2 Paar (17, 3) Prod 51 oft 9 Sum 13
Nr.3 Paar (7, 3) Prod 21 oft 23 Sum 36
ZZ-Brücken 266 - 36 = 230

Itertools.combinations kommt im 2. Teil zu Einsatz.
Die 2. und 3. Zeile des zweiten Teiles müßte so aussehen:

Nr. 2 Paar (17, 3) Prod 51 oft 10 Sum 14
Nr. 3 Paar (7, 3) Prod 21 oft 24 Sum 38

weil 500/21 = 24 und 500/51 = 10

Beweis:


Jetzt die Frage, hat der Kombinations-Befehl die braunen Zellen im Bild automatisch berücksichtigt? Woher aber soll der wissen, daß ich einen Schnitt berechne und das richtig ist?


-----------------
Das Schwierige ist nicht die Mathematik. Schwierig ist es zu formulieren, daß man selber versteht, was man sieht und die anderen auch!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 2385
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2020-08-04


Woher sollen wir eigentlich wissen, was du da machst und ob oder warum das funktioniert oder auch nicht?

Poste den Code und erläutere den Algorithmus.

Dann
- können wir nachvollziehen, was passiert.
- kannst du selbst vielleicht auch nachvollziehen, was passiert.


-----------------
Why waste time learning when ignorance is instantaneous?
- Bill Watterson -



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Bilbo
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 03.01.2005
Mitteilungen: 1972
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, eingetragen 2020-08-04


Hallo Bekell,

da die ganzen Python-Fragen, die Du in den letzten Tagen gestellt hast, ja alle zu dem gleichen Programm zu gehören scheinen, schlage ich vor, dass Du dafür dann auch nicht jedes Mal einen neuen Thread aufmachst, sondern diese in einem Thread sammelst. Ansonsten versteht man nämlich spätestens hier wirklich nicht mehr, worum es eigentlich geht. 🙂

(Für Fragen, die nicht so eng dazugehören, dürfen es natürlich auch weiterhin eigene Threads sein.)

Viele Grüße

Thorsten


-----------------
Heilmagier der Drachengilde
Wohlordner des Universums
Rechner des Unberechenbaren
Navigator Irrlichts im Ozean der Rätsel



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2056
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, vom Themenstarter, eingetragen 2020-08-04


2020-08-04 11:57 - DerEinfaeltige in Beitrag No. 1 schreibt:
Woher sollen wir eigentlich wissen, was du da machst und ob oder warum das funktioniert oder auch nicht?

Poste den Code und erläutere den Algorithmus.
Dann
- können wir nachvollziehen, was passiert.
- kannst du selbst vielleicht auch nachvollziehen, was passiert.

Auf eine Länge von 500 finden wir genau so und soviel ZZ mit PT 7, soviel mit PT 3 und soviel mit PT 17...... Das wird im ersten Teil ausgedruckt. Mit Combinations wird der Schnitt berechnet, also die Anzahl von ZZ-Treffern, die abgezogen werden muß. Dazu bildet er alle Zweier-Combinationen, berechnet deren Häufigkeit. Das macht er alles richtig, nur die Frage von oben bleibt. Es fehlt gegenüber der Handauszählung in der 2. und 3. Zeile des 2. Teiles des Ausdruckes je eine 1 in der Summe.

Python
  1. Wir geben eine Teilerliste vor. Er berechnet wieviele Treffer der jewieligen auf einer vorgegebenen Länge zu finden sind.
  2. Danach testen wir itertools.combinations
  3. Damit berechnet er noch den Schnitt zu den jeweiligen Treffern.
  4. """
  5. from itertools import combinations
  6. from itertools import permutations
  7. import itertools
  8. Teiler=[3,7,17]
  9. Länge=500
  10. Divisor=0
  11. ZZAnzahl=0
  12. Start=1
  13. Zahl=1000
  14. Teilerneu=[]
  15. schnittsumme=0
  16. nr=0
  17. nr1=0
  18.  
  19.  
  20. if len(Teiler)>1:
  21. Länge=int(Zahl/2)
  22. Start=int(len(Teiler))
  23. for i in range (Start,0,-1):
  24. Divisor=Teiler.pop(i-1)# Hier werden die teiler der Liste entnommen.
  25. Teilerneu.append(Divisor)#neuer Contaner mit den teilern, weil der alte geleert wird.
  26. ZZAnzahl=ZZAnzahl+int(Länge/Divisor) # Hier wird summiert
  27. nr=nr+1
  28. print("Nr:",nr,"Teiler",Divisor,"oft",int(Länge/Divisor),"Sum",ZZAnzahl)
  29.  
  30. for L in range(0, Start+1):
  31. for x in itertools.combinations(Teilerneu, L):
  32. if len(x)==2:
  33. erg=x[0]*x[1]
  34. Abzüge=int(Länge/erg)
  35. schnittsumme=schnittsumme+Abzüge
  36. nr1=nr1+1
  37. print("Nr:",nr1,"Paar",x,"Prod",erg,"oft",Abzüge,"Sum",schnittsumme)
  38.  
  39. print("Trefferanzahl", ZZAnzahl,"-",schnittsumme,"=",ZZAnzahl-schnittsumme)



-----------------
Das Schwierige ist nicht die Mathematik. Schwierig ist es zu formulieren, daß man selber versteht, was man sieht und die anderen auch!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Scynja
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 23.02.2011
Mitteilungen: 304
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, eingetragen 2020-08-04


Ich kenne es so, dass man Abkürzungen einmal ausschreibt bevor man sie im Text verwendet.

PT = Primteiler? Okay, das ist einleuchtend und möglichweise auch üblich.

ZZ?? Möglicherweise Zufallszahl(en) Ist mir allerdings erst relativ spät eingefallen.

Wie kann man auf einer Länge von 500 Zufallszahlen finden? Verstehe ich nicht. Also doch keine Zufallszahlen.

Dann geht es weiter:
Schnitt = Anzahl Zufallszahltreffer, die abgezogen werden muss
  Wovon abziehen, warum abziehen?

Alle Zweierkombinationen
= Alle Kombinationen von zwei Zufallszahlen?

Was hat es jetzt mit den Primteilern 3, 7, 17 auf sich?

Ich habe leider immer noch Verständnisprobleme. Aber vielleicht bin ich einfach nur zu weit vom Fach entfernt.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2056
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.5, vom Themenstarter, eingetragen 2020-08-04


ZZ - Vielfache von PZ sind Zusammengesetzte Zahlen... Der Matheteil ist recht primitiv, es geht um die Programmatik! Primteiler sind die Teiler, die eine Zahl teilen, und prim sind. Die gebe ich vor. Er kuckt praktisch, wie oft die Primteiler einer Zahl im Bereich vor der Zahl vorkommen.

Schnitt meint - man spricht auch vom Durchschnitt zweier Mengen -, die Menge der Zahlen, die sich durch 7 und eine andere PZ aus der Teilermenge teilen lassen, haben gemeinsame. Die muß man ausrechnen. Das passiert im 2. Teil. Dann hat man die Menge der zZahlen, die von den PT der Ausgangszahl quasi infiltriert oder berührt sind.  

Ist das so verständlich?


-----------------
Das Schwierige ist nicht die Mathematik. Schwierig ist es zu formulieren, daß man selber versteht, was man sieht und die anderen auch!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 2385
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.6, eingetragen 2020-08-04


Da ich den Fehler nicht verstehe:

Du ignorierst die 357 bei deiner Zählung.

So wäre es etwas kürzer und wesentlich besser zu lesen:
Python
from itertools import combinations
 
def prod(T):
    p = 1
    for t in T:
        p *= t
    return p
 
def teiler_anzahl(Teiler,Nmax):
    R = {}
    for n in range(1,len(Teiler)+1):
        for c in combinations(Teiler,n):
            p = prod(c)
            R[c] = Nmax // p
    return R
 
print(teiler_anzahl([3,7,17],500))
 



[Die Antwort wurde nach Beitrag No.3 begonnen.]


-----------------
Why waste time learning when ignorance is instantaneous?
- Bill Watterson -



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Scynja
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 23.02.2011
Mitteilungen: 304
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.7, eingetragen 2020-08-04


2020-08-04 13:29 - Bekell in Beitrag No. 5 schreibt:
ZZ - Vielfache von PZ sind Zusammengesetzte Zahlen... Der Matheteil ist recht primitiv, es geht um die Programmatik! Primteiler sind die Teiler, die eine Zahl teilen, und prim sind. Die gebe ich vor. Er kuckt praktisch, wie oft die Primteiler einer Zahl im Bereich vor der Zahl vorkommen.

Schnitt meint - man spricht auch vom Durchschnitt zweier Mengen -, die Menge der Zahlen, die sich durch 7 und eine andere PZ aus der Teilermenge teilen lassen, haben gemeinsame. Die muß man ausrechnen. Das passiert im 2. Teil. Dann hat man die Menge der zZahlen, die von den PT der Ausgangszahl quasi infiltriert oder berührt sind.  

Ist das so verständlich?

Etwas Licht ist ins Dunkel gekommen. Ja. Ich lese es mir heute Abend noch einmal genau durch.
Aber wenn ich das richtig sehe, hat DerEinfaeltige bereits die Lösung gefunden.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2056
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.8, vom Themenstarter, eingetragen 2020-08-04


2020-08-04 13:55 - Scynja in Beitrag No. 7 schreibt: Etwas Licht ist ins Dunkel gekommen. Ja. Ich lese es mir heute Abend noch einmal genau durch.
Aber wenn ich das richtig sehe, hat DerEinfaeltige bereits die Lösung gefunden.

Nein, der Einfältige hat eine neues Programm geschrieben. Ich danke ihm dafür, aber das war nicht meine Frage.

Meines funktionierte ja auch. Ich hatte eine Frage zu dem Modul gestellt, wie der rechnet.

@Einfältiger!

die 357 gehört nicht dazu, denn sie hat hinten eine 7. Ich habe mein math. Problem auf die Zahlen mit Endziffer 3 skaliert. Das ersieht man aus der Excel Tabelle.

Die Frage war, ob das Modul die Braune Zahl in der Excel Tabelle als Schnittesschnitt automatisch berücksichtigt?

und was macht Dein Programm hier in dieser Zeile:
Python
  1. R = {}

Ich hatte übrigens auf die 2-er Kombinationen begrenzt. Insofern macht Dein Programm nicht dasselbe. Und dann hatte ich noch die Anzahl der berührten zahlen ausgerechnet, indem ich von der summe der 1-er Kombinationen, die der 2-er abgezogen habe...



-----------------
Das Schwierige ist nicht die Mathematik. Schwierig ist es zu formulieren, daß man selber versteht, was man sieht und die anderen auch!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 2385
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.9, eingetragen 2020-08-04


2020-08-04 14:02 - Bekell in Beitrag No. 8 schreibt:

Ich hatte übrigens auf die 2-er Kombinationen begrenzt. Insofern macht Dein Programm nicht dasselbe. Und dann hatte ich noch die Anzahl der berührten zahlen ausgerechnet, indem ich von der summe der 1-er Kombinationen, die der 2-er abgezogen habe...



Du willst also ausrechnen, wie viele Zahlen genau einen oder alle drei Teiler besitzen.
Dann verstehe ich die Frage nicht.
Denn genau das macht dein Programm, wenn ich es richtig sehe.


-----------------
Why waste time learning when ignorance is instantaneous?
- Bill Watterson -



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2056
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.10, vom Themenstarter, eingetragen 2020-08-04


2020-08-04 14:20 - DerEinfaeltige in Beitrag No. 9 schreibt:
Du willst also ausrechnen, wie viele Zahlen genau einen oder alle drei Teiler besitzen.
Dann verstehe ich die Frage nicht.
Denn genau das macht dein Programm, wenn ich es richtig sehe.

Hier ist nur mal die Zahl 4998 gemeint. Sie hat die PT 3,7,17.
Die Frage ist, wieviele Zahlen unter Ihr, die auf 3 enden, sind entweder durch 3, 7 oder 17 teilbar, oder auch durch zwei von ihnen.

Nr: 1 Teiler 17 oft 29 Sum 29
Nr: 2 Teiler 7 oft 71 Sum 100
Nr: 3 Teiler 3 oft 166 Sum 266

166 ist das Ergebnis. Das ist aber nicht ganz richtig, weil der Schnitt noch raus muß, sonst werden die Zahlen, die 2 der drei PT haben, doppelt gerechnet.

Der Schnitt wird hier berechnet:

Nr.1 Paar (17, 7) Prod 119 oft 4 Sum 4
Nr.2 Paar (17, 3) Prod 51 oft 9 Sum 13
Nr.3 Paar (7, 3) Prod 21 oft 23 Sum 36
Gesamtzahl: 266 - 36 = 230

Die Frage war, da 500/51 = 9,80 ist, also 10 und 23,8, also 24, - und, weil ich nur die Zahlen auf Endziffer 3 haben will - es der wirklich 24 und 10 sind, siehe Excel Tabelle oben, ob Cambinations das automatisch so macht, daß er den Schnittesschnitt berücksichtigt?
 


-----------------
Das Schwierige ist nicht die Mathematik. Schwierig ist es zu formulieren, daß man selber versteht, was man sieht und die anderen auch!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 2385
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.11, eingetragen 2020-08-04


2020-08-04 14:43 - Bekell in Beitrag No. 10 schreibt:

Hier ist nur mal die Zahl 4998 gemeint. Sie hat die PT 3,7,17.
Die Frage ist, wieviele Zahlen unter Ihr, die auf 3 enden, sind entweder durch 3, 7 oder 17 teilbar, oder auch durch zwei von ihnen.

Nr: 1 Teiler 17 oft 29 Sum 29
Nr: 2 Teiler 7 oft 71 Sum 100
Nr: 3 Teiler 3 oft 166 Sum 266

166 ist das Ergebnis. Das ist aber nicht ganz richtig, weil der Schnitt noch raus muß, sonst werden die Zahlen, die 2 der drei PT haben, doppelt gerechnet.

Der Schnitt wird hier berechnet:

Nr.1 Paar (17, 7) Prod 119 oft 4 Sum 4
Nr.2 Paar (17, 3) Prod 51 oft 9 Sum 13
Nr.3 Paar (7, 3) Prod 21 oft 23 Sum 36
Gesamtzahl: 266 - 36 = 230

Die Frage war, da 500/51 = 9,80 ist, also 10 und 23,8, also 24, - und, weil ich nur die Zahlen auf Endziffer 3 haben will - es der wirklich 24 und 10 sind, siehe Excel Tabelle oben, ob Cambinations das automatisch so macht, daß er den Schnittesschnitt berücksichtigt?
 

itertools.combinations(iterable,r) macht genau das, was in der Dokumentation steht.
Es erzeugt alle $r$-Tupel aus der Iterablen iterable.

Was du da rechnest, verstehe ich nicht.
Man kann nur raten, dass du die Dokumentation der Funktionen "int" und "round" nicht gelesen hast.

int(500/51) ergibt jedenfalls $9$ und nicht $10$.


-----------------
Why waste time learning when ignorance is instantaneous?
- Bill Watterson -



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2056
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.12, vom Themenstarter, eingetragen 2020-08-04


2020-08-04 17:00 - DerEinfaeltige in Beitrag No. 11 schreibt:

itertools.combinations(iterable,r) macht genau das, was in der Dokumentation steht.
Es erzeugt alle $r$-Tupel aus der Iterablen iterable.

in welcher Dokumentation?
Bist Du so freundlich, und verlinkst die bitte...


-----------------
Das Schwierige ist nicht die Mathematik. Schwierig ist es zu formulieren, daß man selber versteht, was man sieht und die anderen auch!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 2385
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.13, eingetragen 2020-08-04


Die Google-Suche danach geht schneller als das Verfassen eines Postes.
Daher: Nein.


-----------------
Why waste time learning when ignorance is instantaneous?
- Bill Watterson -



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2056
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.14, vom Themenstarter, eingetragen 2020-08-04


2020-08-04 17:00 - DerEinfaeltige in Beitrag No. 11 schreibt:
int(500/51) ergibt jedenfalls $9$ und nicht $10$.

Das stimmt nicht. Ich schrieb: ... mit Endziffer 3


-----------------
Das Schwierige ist nicht die Mathematik. Schwierig ist es zu formulieren, daß man selber versteht, was man sieht und die anderen auch!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 2385
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.15, eingetragen 2020-08-04


2020-08-04 18:02 - Bekell in Beitrag No. 14 schreibt:
2020-08-04 17:00 - DerEinfaeltige in Beitrag No. 11 schreibt:
int(500/51) ergibt jedenfalls $9$ und nicht $10$.

Das stimmt nicht.

Doch das stimmt.
Schick doch mal den Link zur Python-Dokumentation der Funktion "int".


-----------------
Why waste time learning when ignorance is instantaneous?
- Bill Watterson -



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2056
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.16, vom Themenstarter, eingetragen 2020-08-04


2020-08-04 18:16 - DerEinfaeltige in Beitrag No. 15 schreibt:
2020-08-04 18:02 - Bekell in Beitrag No. 14 schreibt:
2020-08-04 17:00 - DerEinfaeltige in Beitrag No. 11 schreibt:
int(500/51) ergibt jedenfalls $9$ und nicht $10$.

Das stimmt nicht.

Doch das stimmt.
Schick doch mal den Link zur Python-Dokumentation der Funktion "int".

Das stimmt nicht, weil hinter 500/51 5000/51 steckt, aber 500 sind nur die Zahlen auf Endziffer 3. Du mußt diese Bedingung mitdenken! Auf diese Art kommt der 1 Treffer vor 51 zu liegen und daher die Summe 24


-----------------
Das Schwierige ist nicht die Mathematik. Schwierig ist es zu formulieren, daß man selber versteht, was man sieht und die anderen auch!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Scynja
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 23.02.2011
Mitteilungen: 304
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.17, eingetragen 2020-08-04


Warum schreibst du eigentlich so komplizierte Programme?
Du baust Schleifen ein, die nichts machen. Dann machst du ein Array leer und befüllst ein neues mit dem Inhalt, ohne, dass es einen Zweck hat.

Das ist doch alles Rauschen, was das Verständnis erschwert. In deinem Code guckst du an keiner Stelle nach der Endziffer. Es ist mir auch ein Rätsel, wie du mit dem Code auf 5000 kommen willst.

Wenn du int(500/51) schreibst und int liefert den nächstniedrigen Integer, dann ist das in jedem Fall 9 und nicht 10.

Um dir noch einmal zu zeigen was combinations macht (aus dem tooltip kopiert):
combinations(range(4), 3) --> (0,1,2), (0,1,3), (0,2,3), (1,2,3)

Python
from itertools import combinations, permutations
import itertools
Teiler=[3,7,17][::-1]
Divisor=0
AnzahlZZ=0
Zahl=1000
Länge=Zahl/2
schnittsumme=0
nr1=0
 
for Nr, Divisor in enumerate(Teiler):
    AnzahlZZ+=int(Länge/Divisor) # Hier wird summiert
    print("Nr:",Nr + 1,"Teiler",Divisor,"oft",int(Länge/Divisor),"Sum",AnzahlZZ)
 
for Nr, x in enumerate(itertools.combinations(Teiler, 2)):
    erg=x[0]*x[1]
    Abzüge=int(Länge/erg)
    schnittsumme+=Abzüge
    print("Nr:",Nr+1,"Paar",x,"Prod",erg,"oft",Abzüge,"Sum",schnittsumme)
 
print("Trefferanzahl", AnzahlZZ,"-",schnittsumme,"=",AnzahlZZ-schnittsumme)
 



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Bekell hat die Antworten auf ihre/seine Frage gesehen.
Bekell wird per Mail über neue Antworten informiert.
Neues Thema [Neues Thema] Antworten [Antworten]    Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2020 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]