WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Problem mit for-Schleife mit if-Bedingung (Primzahlen)

 

baller
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 21.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2012, 20:04     Titel: Problem mit for-Schleife mit if-Bedingung (Primzahlen)
  Antworten mit Zitat      
Bitte um dringende hilfe bezüglich folgender Probleme:
Aufgabe:
Wie viele Primzahlen gibt es im Bereich von 1 bis 100?
soweit so gut-
wie löse ich diese Problem mit einer for schleife?
Hab es mal mit den Zahlen von 1:7 probiert.
Code:

s=1;
for i=1:7
       s=i+1;
   if (isprime(s));
   s  
   end
end
 


Die Primzahlen werden alle ausgegeben.
Probleme:
1.
wenn der bereich nicht mit eier Primzahl endet wird immer die nächst höhere mit ausgegeben. Bei "for i=1:100" wir somit 101 auch noch mit angezeigt.
2.
wie kann ich die Anzahl der ausgaben zählen lassen?

Ich komm mit diesen Problemen einfach nicht weiter. Und hoffe hier kompetente Hilfe zu finden.
Danke schon mal an alle user des Forums. 'Question'

aufgabe8.m
 Beschreibung:

Download
 Dateiname:  aufgabe8.m
 Dateigröße:  66 Bytes
 Heruntergeladen:  568 mal

_________________

Der Sinn des Lebens ist dem Leben einen Sinn zu geben.
Private Nachricht senden Benutzer-Profile anzeigen


baller
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 21.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2012, 09:58     Titel:
  Antworten mit Zitat      
Das Problem mit der nächst höeren Ausgabe hab ich nun gelöst der Fehler war in Zeile 3 Anstatt s=i+1; musste s=i*1 verwendet werden

Nun bekomme ich alle primzahlen im bereich 1:100 ausgegeben.
Wie lasse ich die Anzahl der ausgaben zählen?
Code:
s=1;
for i=1:100
       s=i*1;
   if (isprime(s));
   s      
   end
end


Komm einfach nicht weiter. HILFE!!!!

aufgabe8.m
 Beschreibung:

Download
 Dateiname:  aufgabe8.m
 Dateigröße:  62 Bytes
 Heruntergeladen:  533 mal

_________________

Der Sinn des Lebens ist dem Leben einen Sinn zu geben.
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 22.10.2012, 10:19     Titel:
  Antworten mit Zitat      
Hallo,

ich würde das erstmal vereinfachen:

Code:

for i=1:100
   if (isprime(i))
      % Ausgabe von i, wenn i prim
      i      
   end
end
 


Um die Primzahlen zu zählen, führe einen Counter ein, der dann um 1 erhöht wird, wenn i prim ist.

Grüße, Marc
Private Nachricht senden Benutzer-Profile anzeigen
 
baller
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 21.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2012, 10:37     Titel:
  Antworten mit Zitat      
thx MaFam für die schnelle hilfe.

Mit der "vereinfachung" geht es auch.
aber wie füge ich da einen counter ein? Versuch es schon die ganze Zeit un komm nicht weiter.

Ich habe mit s "umschreiben" um den "counter" in eine formel zu verwenden.

bsp. b=s*countervariable
hat nicht funktioniert deshalb meine frage wie würden sie den counter einfügen bzw. wie lass ich die Ergebnisse zählen?

ich Danke schon mal allen für Ihre Bemühungen. 'Wink'
_________________

Der Sinn des Lebens ist dem Leben einen Sinn zu geben.
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 22.10.2012, 10:50     Titel:
  Antworten mit Zitat      
Wie steht es eigentlich um deine Programmierkenntnisse? Bist du Anfänger? Den Counter fügt man an genau der Stelle ein, wo klar ist, dass eine neue Primzahl gefunden wurde. Das kann ja nur innerhalb der if-Abfrage der Fall sein...
Private Nachricht senden Benutzer-Profile anzeigen
 
baller
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 21.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2012, 11:05     Titel:
  Antworten mit Zitat      
Ich bin kompletter anfänger.
Studiere Technikjournalismus und hab diese Semester "Simulationstechnik".
Meine programmierkenntnisse sind sehr bescheiden. 'Laughing'

Innerhalb der if-Bedingung ist klar zumindest hätte ich, dass nach gefühl genau so gemacht.
Die Frage ist aber nicht wo ich den counter einsetz sondern wie?
bzw. wie lautet die generelle Syntax um die Anzahl der Ergebnisse zählen zu lassen?

Wie gesagt hab nicht wirklich viel Ahnung und google bietet dazu auch nicht wirklich viel. Über google lande ich immer nur bei Beiträgen zu komplizieteren Dingen. Dies hat wohl auch seinen Grund. 'Wink'

Hilft mir aber nicht weiter....
thx, schon mal!
_________________

Der Sinn des Lebens ist dem Leben einen Sinn zu geben.
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 22.10.2012, 12:11     Titel:
  Antworten mit Zitat      
OK, ich greife meinen Code von weiter oben noch einmal auf. Das Problem ist an sich so simpel, dass man mit Tipps im Grunde alles verrät.

Code:


% Zähler für die gefundenen Primzahlen
% Anfänglich natürlich 0
primCount=0;

for i=1:100
   if (isprime(i))
      % An dieser Stelle ist eine weitere Primzahl identifiziert worden
      % Daher wird der Zähler um 1 erhöht
      primCount=primCount+1;
      % Ausgabe von i, wenn i prim
      i            
   end
end

% Abschließende Ausgabe des Zählers
primCount
 


Für sehr große n ist eine algorithmische Überprüfung der Anzahl der Primzahlen nicht mehr angemessen durchführbar, deshalb greift man zu einer Abschätzung. Diese besagt, dass die Primzahlen über den natürlichen Zahlen logarithmisch verteilt sind, sogar im Grenzwert exakt logarithmisch.

Grüße, Marc
Private Nachricht senden Benutzer-Profile anzeigen
 
baller
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 21.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2012, 12:51     Titel:
  Antworten mit Zitat      
vielen herzlichen Dank, MaFam!!!!!!!!!!! Very Happy
hätte es wahrscheinlich allein niemals hinbekommen, obwohl die Lösung ja relativ simple ist. 'Smile'
Ich kann verstehn wenn "Profis" nicht wirklich Lust haben sich mit den Anfänger Problemen rumzuschlagen, deshalb schätze ich es sehr, dass Sie sich die Zeit genommen haben.
der letztendliche code:
Code:

s=0;
for i=1:100
   if (isprime(i))
      s=s+1;
      i;        
   end
end
s


das i in zeile 5 habe ich weggelassen da ich die Ausgabe der eigentlichen Primzahlen nicht brauchte, sondern nur die Anzahl. Mit "i;" müsste es auch gehen.

Ich habe nur noch einige Frage zum besseren Verständnis.

warum muss der counter bei 0 beginnen?

und müsste ich theoretisch nicht noch mal definiert werden, dass sich der counter auf die i`s bezieht?
Hoffe ich drücke mich verständlich genug aus. 'Laughing'

so in der art:
Code:
s=0;
for i=1:100
   if (isprime(i))
      s=s+1;
      i=s;        
   end
end
s
 

ich weiß das beide wege funktionieren versteh nur nicht warum.

Aber auf jeden Fall ist mein Problem erst einmal gelöst. Danke, Danke, Danke!!! 'Very Happy'
_________________

Der Sinn des Lebens ist dem Leben einen Sinn zu geben.
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 22.10.2012, 13:17     Titel:
  Antworten mit Zitat      
Dann lass die Zeile mit dem i einfach weg, wenn du nur an der Anzahl interessiert bist. Ansonsten denkst du zu kompliziert. Man geht hier die i's durch. Das sind die zu überprüfenden (natürlichen) Zahlen. Auf der anderen Seite willst du die Primzahlen zählen. Diese Information muss natürlich in einer separaten Variable gespeichert werden.
Private Nachricht senden Benutzer-Profile anzeigen
 
baller
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 21.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2012, 13:23     Titel:
  Antworten mit Zitat      
ok, denk ich habs kapiert.
denk manchmal wirklich zu kompliziert.

Danke, für die kompetente Hilfe. 'Very Happy'
_________________

Der Sinn des Lebens ist dem Leben einen Sinn zu geben.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.