<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Sieb des Erastosthenes]]></title><description><![CDATA[<p>Hallo</p>
<p>ich soll den Sieb des Erastosthenes programmieren. Hab das auch ganz gut hinbekommen, doch irgendwie spuckt der mit manchmal komische Werte aus, statt die Primzahlen auszugeben.</p>
<p>Der Code sieht so aus:</p>
<pre><code class="language-cpp">// SiebDesErastosthenes.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//

#include &quot;stdafx.h&quot;
#include &lt;iostream&gt;
using namespace std;

void Sieb(int MaxPrim, int&amp; SizeOfA, int*&amp; A)
{
	bool *Prims = new bool[MaxPrim+1];
	int i=0,j=0;
	for (i=0; i&lt;=MaxPrim; i++){
		Prims[i]=false;
	}

	for (i=2; i&lt;=MaxPrim/2; i++)
		for (j=2*i; j&lt;=MaxPrim; j+=i)
			Prims[j]=true;
	Prims[2]=true;	

	for (i=0; i&lt;=MaxPrim;i++)
		cout &lt;&lt; Prims[i] &lt;&lt; endl;

	SizeOfA=0;
	for (i=0; i&lt;=MaxPrim; i++)
	{
		if (Prims[i]==0)
			SizeOfA+=1;
	}

	A=new int[SizeOfA];

	for (i=0; i&lt;=MaxPrim; i++){
		if (Prims[i]==0){
			A[i]=i+2;
		}
	}
	delete [] Prims;
}

int _tmain(int argc, _TCHAR* argv[])
{
	int p;
	int *A;

	Sieb(16,p,A);

	for (int a=0; a&lt;p;a++)
		cout &lt;&lt; A[a] &lt;&lt; endl;

}
</code></pre>
<p>Das Problem ist, dass manchmal (an der Stelle 2 z.B) Werte wie -842150451 erscheinen. Ich weiß absolut nicht wo der Fehler ist.</p>
<p>Kann jemand helfen?</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/265802/sieb-des-erastosthenes</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 19:27:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/265802.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 28 Apr 2010 20:59:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Sieb des Erastosthenes on Wed, 28 Apr 2010 20:59:46 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>ich soll den Sieb des Erastosthenes programmieren. Hab das auch ganz gut hinbekommen, doch irgendwie spuckt der mit manchmal komische Werte aus, statt die Primzahlen auszugeben.</p>
<p>Der Code sieht so aus:</p>
<pre><code class="language-cpp">// SiebDesErastosthenes.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//

#include &quot;stdafx.h&quot;
#include &lt;iostream&gt;
using namespace std;

void Sieb(int MaxPrim, int&amp; SizeOfA, int*&amp; A)
{
	bool *Prims = new bool[MaxPrim+1];
	int i=0,j=0;
	for (i=0; i&lt;=MaxPrim; i++){
		Prims[i]=false;
	}

	for (i=2; i&lt;=MaxPrim/2; i++)
		for (j=2*i; j&lt;=MaxPrim; j+=i)
			Prims[j]=true;
	Prims[2]=true;	

	for (i=0; i&lt;=MaxPrim;i++)
		cout &lt;&lt; Prims[i] &lt;&lt; endl;

	SizeOfA=0;
	for (i=0; i&lt;=MaxPrim; i++)
	{
		if (Prims[i]==0)
			SizeOfA+=1;
	}

	A=new int[SizeOfA];

	for (i=0; i&lt;=MaxPrim; i++){
		if (Prims[i]==0){
			A[i]=i+2;
		}
	}
	delete [] Prims;
}

int _tmain(int argc, _TCHAR* argv[])
{
	int p;
	int *A;

	Sieb(16,p,A);

	for (int a=0; a&lt;p;a++)
		cout &lt;&lt; A[a] &lt;&lt; endl;

}
</code></pre>
<p>Das Problem ist, dass manchmal (an der Stelle 2 z.B) Werte wie -842150451 erscheinen. Ich weiß absolut nicht wo der Fehler ist.</p>
<p>Kann jemand helfen?</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1889713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1889713</guid><dc:creator><![CDATA[alphatier]]></dc:creator><pubDate>Wed, 28 Apr 2010 20:59:46 GMT</pubDate></item><item><title><![CDATA[Reply to Sieb des Erastosthenes on Wed, 28 Apr 2010 21:24:18 GMT]]></title><description><![CDATA[<p>Solche Zahlen treten auf wenn das Array nicht genullt wurde, sprich es ist einfach nur &quot;Müll&quot; im Speicher.<br />
Null mal das Array bevor Du es anwendest.<br />
Ansonsten seh ich aus dem Code das Problem nicht, das ist eher eine allgemeine Aussage.<br />
lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1889723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1889723</guid><dc:creator><![CDATA[L33TF4N]]></dc:creator><pubDate>Wed, 28 Apr 2010 21:24:18 GMT</pubDate></item><item><title><![CDATA[Reply to Sieb des Erastosthenes on Wed, 28 Apr 2010 21:29:03 GMT]]></title><description><![CDATA[<p>alphatier schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int _tmain(int argc, _TCHAR* argv[])
{
}
</code></pre>
</blockquote>
<p>int _tmain, was ist dass den ? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1889724</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1889724</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 28 Apr 2010 21:29:03 GMT</pubDate></item><item><title><![CDATA[Reply to Sieb des Erastosthenes on Wed, 28 Apr 2010 21:36:31 GMT]]></title><description><![CDATA[<p>Dein Code ist aber auch komisch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /><br />
<code>bool *Prims</code><br />
Wie wärs mit <code>not_a_prim</code> ?!<br />
<code>Prims[2]=true;</code> das hier sollte auch false sein</p>
<p><code>if (Prims[i]==0)</code> für den vergleich nimmt man besser false</p>
<p><code>SizeOfA+=1;</code><br />
<code>++SizeOfA</code> bzw <code>SizeOfA++</code></p>
<p><code>int i=0,j=0;</code> das hier deklarierst du lieber lokal in der der jeweiligen for-schleife.</p>
<p>ansonsten sieht das aber nichts falsch/komisch aus...</p>
<p>bb</p>
<p>PS:<br />
<code>int _tmain</code> ist ein MSVC-&quot;Feature&quot;<br />
Wird genommen, wenn man iwas mit unicode oder so einstellt und keine leere projekt-mappe möchte... ist aber hier jedenfalls nicht der fehler :p</p>
<p>edit:</p>
<pre><code class="language-cpp">A=new int[SizeOfA];

    for (i=0; i&lt;=MaxPrim; i++){
        if (Prims[i]==0){
            A[i]=i+2;
        }
    }
    delete [] Prims;
</code></pre>
<p>hier ist der Fehler<br />
du brauchst nen anderen laufindex für <code>A[i]</code> - schreib z.bsp.:<br />
<code>A[j++]</code> (und setz j davor auf 0)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1889726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1889726</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 28 Apr 2010 21:36:31 GMT</pubDate></item><item><title><![CDATA[Reply to Sieb des Erastosthenes on Wed, 28 Apr 2010 21:39:17 GMT]]></title><description><![CDATA[<p>Wie L33TF4N schon sagte: Uninitialisiertes Array. Ich kann dir sogar sagen wo: Zeilen 33 und Folgende. Dort wird A angelegt und im folgenden angenommen, dass alle Werte schon 0 sind. Außerdem bin ich mir sehr sicher, dass dein Programm falsch ist. Du müsstest beim Befüllen von A eigentlich zwei Zählvariablen haben, anstatt nur einer.</p>
<p>Und nun noch die Frage: Gibt es einen guten Grund für die manuelle Speicherverwalung oder hast du bloß noch nie von std::vector gehört?</p>
<p>edit: Da war ich zu langsam...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1889727</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1889727</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 28 Apr 2010 21:39:17 GMT</pubDate></item><item><title><![CDATA[Reply to Sieb des Erastosthenes on Wed, 28 Apr 2010 21:40:39 GMT]]></title><description><![CDATA[<p>hihi joa kein Fehler, aber auch kein c++ Standard <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
<p><a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39346" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic.php?t=39346</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1889729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1889729</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 28 Apr 2010 21:40:39 GMT</pubDate></item><item><title><![CDATA[Reply to Sieb des Erastosthenes on Wed, 28 Apr 2010 21:54:47 GMT]]></title><description><![CDATA[<p>Dweb schrieb:</p>
<blockquote>
<p>alphatier schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int _tmain(int argc, _TCHAR* argv[])
{
}
</code></pre>
</blockquote>
<p>int _tmain, was ist dass den ? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Das erzeugt Visual Studio von alleine, wenn ich ein neues Projekt anlege.</p>
<p>Hab jetzt das Array genullt, doch jetzt stehen da nullen statt komische Werte. Eigentlich sollte er ja nur die Primzahlen ausspucken.</p>
<p>Das Programm schafft es irgendwie nicht, in</p>
<pre><code class="language-cpp">for (i=0; i&lt;=MaxPrim; i++){
		if (Prims[i]==0){
			A[i]=i+2;
		}
	}
</code></pre>
<p>dieser Schleife zwischen true und false zu entscheiden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1889734</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1889734</guid><dc:creator><![CDATA[alphatier]]></dc:creator><pubDate>Wed, 28 Apr 2010 21:54:47 GMT</pubDate></item><item><title><![CDATA[Reply to Sieb des Erastosthenes on Wed, 28 Apr 2010 22:09:05 GMT]]></title><description><![CDATA[<p>oh ich seh da grad selber was. A hat gar keine Stelle i wenn diese über 7 steigt. Vielleicht liegt es daran. Hoffe das Programm hat mir nicht irgendwas zerschossen, wobei vorhin von Sophos mal ne Meldung kam, dass das Programm angeblich ein Virus sei <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1889741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1889741</guid><dc:creator><![CDATA[alphatier]]></dc:creator><pubDate>Wed, 28 Apr 2010 22:09:05 GMT</pubDate></item><item><title><![CDATA[Reply to Sieb des Erastosthenes on Wed, 28 Apr 2010 22:12:45 GMT]]></title><description><![CDATA[<p>Ja genau daran lag es. Jetzt funktioniert das Programm.</p>
<p>Zu den Lokalen Variablen:<br />
Das habe ich am Anfang auch gemacht, doch im Debugger waren dann auf einmal mehrere i's und j's, woraufhin ich diese Methode bevorzugte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1889742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1889742</guid><dc:creator><![CDATA[alphatier]]></dc:creator><pubDate>Wed, 28 Apr 2010 22:12:45 GMT</pubDate></item></channel></rss>