Matroids Matheplanet Forum Index
Moderiert von Bilbo matph
Matroids Matheplanet Forum Index » Informatik » Python Phänomen
Druckversion
Druckversion
Antworten
Antworten
Autor
Schule Python Phänomen
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-14


Kann mir bitte jemand erklären, warum bei den geradzahligen Nummern die int(i/2) nicht funktioniert?
Das Programm zählt die Pz getrennt in der oberen Hälfte von und und in der unteren Hälfte.

Das Verhalten ist umso unverständlicher, als i/2 ja immer eine krumme Zahl ist, die ich aber mit int zwinge, eine ganze Zahl zu sein.
Python
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. from sympy.ntheory import isprime
  4. from sympy import sieve
  5. from sympy import primepi
  6.  
  7. Länge=0
  8. pz1=0
  9. nr=0
  10.  
  11. def pzzähler(tx):
  12. pz1=0
  13. # print("in PZZ tx=",tx)
  14. for t in range(tx,0,-10):
  15. if isprime(t):
  16. pz1=pz1+1
  17. #print("t in if",t,"pz1",pz1)
  18. else:
  19. pass
  20. #print("t in else",t,"pz1",pz1)
  21. return(pz1)
  22.  
  23.  
  24. x=np.arange(3,1000,10)
  25. for i in range(3,1000,10): # in 2 teilen
  26. Länge=i//20
  27. nr=nr+1
  28. pzoben=pzzähler(i)-pzzähler(int(i//2))
  29. pzunten=pzzähler(int(i/2))
  30.  
  31. print("Nr.",nr,"i=",i,"Lä",Länge,"oben:",pzoben,"unten",pzunten)



-----------------
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
tactac
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 15.10.2014
Mitteilungen: 1799
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2020-08-14


Bei geraden Nr ist i eine Zahl, die um eins größer ist als eine durch 4 teilbare. int(i/2) ist daher gerade, und pzzähler zählt somit nur gerade Primzahlen.



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: 311
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, eingetragen 2020-08-14


Hi Bekell,

Gerade Zahlen sind nie Primzahlen. Eine gerade Zahl + n * 10 ist also nie eine Primzahl. Mit Z e N {/2} und n e N.

3+2*10=23

nr 4 bedeutet:

(4-1) * 10 + 3 = 33

33 div 2 = 16.

Von 16 ausgehend wirst du nie eine Primzahl finden, wenn du in 10er Schritten zählst. Das ganze Programm ist auch mal wieder viel zu kompliziert geschrieben.



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-14


2020-08-14 20:39 - Scynja in Beitrag No. 2 schreibt:
Hi Bekell,

Gerade Zahlen sind nie Primzahlen. Eine gerade Zahl + n * 10 ist also nie eine Primzahl. Mit Z e N {/2} und n e N.

3+2*10=23

nr 4 bedeutet:

(4-1) * 10 + 3 = 33

33 div 2 = 16.

Von 16 ausgehend wirst du nie eine Primzahl finden, wenn du in 10er Schritten zählst. Das ganze Programm ist auch mal wieder viel zu kompliziert geschrieben.

Teilt er denn nicht immer mit i eine Zahl, die auf 3 endet? Dann müßte ja auch die ungerade Zeile eine 0 haben? Hat sie aber nicht.

Was schlagt Ihr für eine Veränderung vor?


-----------------
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
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.4, vom Themenstarter, eingetragen 2020-08-14


2020-08-14 20:39 - tactac in Beitrag No. 1 schreibt:
Bei geraden Nr ist i eine Zahl, die um eins größer ist als eine durch 4 teilbare. int(i/2) ist daher gerade, und pzzähler zählt somit nur gerade Primzahlen.

Danke Toctoc, so ist es ....


-----------------
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
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-14


Fehler behoben!
Python
  1. mport matplotlib.pyplot as plt
  2. import numpy as np
  3. from sympy.ntheory import isprime
  4. from sympy import sieve
  5. from sympy import primepi
  6.  
  7. Länge=0
  8. pz1=0
  9. nr=0
  10. Hälfte=0
  11.  
  12. def pzzähler(tx):
  13. pz1=0
  14. # print("in PZZ tx=",tx)
  15. for t in range(tx,0,-10):
  16. if isprime(t):
  17. pz1=pz1+1
  18. #print("t in if",t,"pz1",pz1)
  19. else:
  20. pass
  21. #print("t in else",t,"pz1",pz1)
  22. return(pz1)
  23.  
  24.  
  25. x=np.arange(3,1000,10)
  26. for i in range(3,1000,10): # in 2 teilen
  27. Länge=i//20
  28. nr=nr+1
  29. if (int(i/2)-1)%10==0:
  30. Hälfte=int(i/2)-8
  31. else:
  32. pass
  33.  
  34. if (int(i/2)-6)%10==0:
  35. Hälfte=int(i/2)-3
  36. else:
  37. pass
  38. pzoben=pzzähler(i)-pzzähler(Hälfte)
  39. pzunten=pzzähler(Hälfte)
  40.  
  41. print("Nr.",nr,"i=",i,"Lä",Länge,"oben:",pzoben,"unten",pzunten, int(i/2), Hälfte)
  42.  

Danke



-----------------
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
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]