<?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[Primzahlen]]></title><description><![CDATA[<p>Ich wollt jetzt auch mal wieder so n Primzahlen Programm schreiben, und hab gedacht des wär so pipifax....aber mh irgendwie, also so einfach find ichs doch net^^ <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Mein Code hängt sich nach der Zahl &quot;2&quot; auf:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Prime
{
    public:
    explicit Prime();
    ~Prime();
    inline long NextPrime();

    private:
    long m_PrimeNumber;
};

Prime::Prime()
:m_PrimeNumber(1)
{

}

Prime::~Prime()
{

}

long Prime::NextPrime()
{
    for (int i=2;i&lt;m_PrimeNumber;i++)
    {
        if((m_PrimeNumber % i) != 0)
        {
            m_PrimeNumber++;
            i=2;
        }
    }
    return m_PrimeNumber++;
}

int main()
{
    Prime temp;
    while(1)
    {
        cout &lt;&lt; temp.NextPrime() &lt;&lt; &quot;\n&quot;;
        system(&quot;pause&quot;);
    }

    return 0;
}
</code></pre>
<p>???</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/194390/primzahlen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 29 Sep 2026 16:37:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/194390.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 06 Oct 2007 09:35:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Primzahlen on Sat, 06 Oct 2007 09:35:31 GMT]]></title><description><![CDATA[<p>Ich wollt jetzt auch mal wieder so n Primzahlen Programm schreiben, und hab gedacht des wär so pipifax....aber mh irgendwie, also so einfach find ichs doch net^^ <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Mein Code hängt sich nach der Zahl &quot;2&quot; auf:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Prime
{
    public:
    explicit Prime();
    ~Prime();
    inline long NextPrime();

    private:
    long m_PrimeNumber;
};

Prime::Prime()
:m_PrimeNumber(1)
{

}

Prime::~Prime()
{

}

long Prime::NextPrime()
{
    for (int i=2;i&lt;m_PrimeNumber;i++)
    {
        if((m_PrimeNumber % i) != 0)
        {
            m_PrimeNumber++;
            i=2;
        }
    }
    return m_PrimeNumber++;
}

int main()
{
    Prime temp;
    while(1)
    {
        cout &lt;&lt; temp.NextPrime() &lt;&lt; &quot;\n&quot;;
        system(&quot;pause&quot;);
    }

    return 0;
}
</code></pre>
<p>???</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379027</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379027</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Sat, 06 Oct 2007 09:35:31 GMT</pubDate></item><item><title><![CDATA[Reply to Primzahlen on Sat, 06 Oct 2007 10:03:31 GMT]]></title><description><![CDATA[<p>Dein Alogrithmus kann gar nicht funktionieren. Sobald da bei der 3 angelangt bist (was eine Primzahl ist) kommt ein Rest 1 raus. Sprich die Bedingung ist erfüllt, doch die nächste Primzahl die getestet wird ist jetzt die 4. Wenn dann i == 3 ist hast du wieder einen Rest von 1 und die Primzahl ist jetzt 5 usw.</p>
<p>Resultat Endlosschleife ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379039</guid><dc:creator><![CDATA[Baracke_out]]></dc:creator><pubDate>Sat, 06 Oct 2007 10:03:31 GMT</pubDate></item><item><title><![CDATA[Reply to Primzahlen on Sat, 06 Oct 2007 10:22:11 GMT]]></title><description><![CDATA[<p>Muss dass hier:</p>
<pre><code class="language-cpp">if((m_PrimeNumber % i) != 0)
</code></pre>
<p>nicht so sein?<br />
[ censored ]</p>
<p>^-- Oben steckt der Fehler <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /> Ich klau hier niemandem die Arbeit <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
<p>mbu.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379040</guid><dc:creator><![CDATA[mbu]]></dc:creator><pubDate>Sat, 06 Oct 2007 10:22:11 GMT</pubDate></item><item><title><![CDATA[Reply to Primzahlen on Sat, 06 Oct 2007 10:18:47 GMT]]></title><description><![CDATA[<p>Klau ihm doch nicht seine Arbeit <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="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379046</guid><dc:creator><![CDATA[Baracke_out]]></dc:creator><pubDate>Sat, 06 Oct 2007 10:18:47 GMT</pubDate></item><item><title><![CDATA[Reply to Primzahlen on Sat, 06 Oct 2007 10:22:39 GMT]]></title><description><![CDATA[<p>Hast Recht, hab da was verändert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379048</guid><dc:creator><![CDATA[mbu]]></dc:creator><pubDate>Sat, 06 Oct 2007 10:22:39 GMT</pubDate></item><item><title><![CDATA[Reply to Primzahlen on Sat, 06 Oct 2007 11:12:50 GMT]]></title><description><![CDATA[<p>Ja gut dann muss es so heißen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt; 
using namespace std; 

class Prime 
{ 
    public: 
    explicit Prime(); 
    ~Prime(); 
    inline long NextPrime(); 

    private: 
    long m_PrimeNumber; 
}; 

Prime::Prime() 
:m_PrimeNumber(1) 
{ 

} 

Prime::~Prime() 
{ 

} 

long Prime::NextPrime() 
{ 
    for (int i=2;i&lt;m_PrimeNumber;i++) 
    { 
        if((m_PrimeNumber % i) == 0) 
        { 
            m_PrimeNumber++; 
            i=2; 
        } 
    } 
    return m_PrimeNumber++; 
} 

int main() 
{ 
    Prime temp; 
    while(1) 
    { 
        cout &lt;&lt; temp.NextPrime() &lt;&lt; &quot;\n&quot;; 
        system(&quot;pause&quot;); 
    } 

    return 0; 
}
</code></pre>
<p>Kann ich das Ding noch schneller machen?</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379069</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Sat, 06 Oct 2007 11:12:50 GMT</pubDate></item><item><title><![CDATA[Reply to Primzahlen on Sat, 06 Oct 2007 12:16:51 GMT]]></title><description><![CDATA[<p>Ja klar.<br />
1. Dein Programm ist falsch! Eine Zahl wird als Primzahl berehnet, obwohl sie keine ist! Siehe <a href="http://de.wikipedia.org/wiki/Primzahl" rel="nofollow">Definition von Primzahl</a>.</p>
<p>2. EDIT: naja, egal.</p>
<p>3. kann man eine bestimmte Gruppe von Zahlen bereits im Vorhinein ausschließen (bis auf ein Zahl ;))</p>
<p>usw.</p>
<p>P.S.: Ich wäre ein bisschen anders an die Sache herangegangen, aber so gehts ja auch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Gruß<br />
Don06</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379079</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Sat, 06 Oct 2007 12:16:51 GMT</pubDate></item><item><title><![CDATA[Reply to Primzahlen on Sat, 06 Oct 2007 11:48:51 GMT]]></title><description><![CDATA[<p>Ja, denk einfach mal nach, welche Zahlen überhaupt Primzahlen sein können. Tipp: du prüfst jede Zahl, ob sie ein Primzahl ist.<br />
Außerdem brauchst du die möglichen Teiler nicht alle zu durchlaufen.<br />
Es reicht, wenn du bis zur Hälte der möglichen Primzahl hochzählst und auf Primzahl testest (Beispiel: 23, dann ist die Zahl auf keinen Fall durch 12 und höher teilbar).</p>
<p>Auch solltest du evtl. eine Abbruchbedingung bzgl. des Datentyps 'long' einbauen (unsigned long wäre sogar besser).</p>
<p>Wenn du wirklich ein effizientes Primzahlsuchprogramm schreiben willst - besonders für große Zahlen - dann mußt du dich erst ein bißchen mit Primzahl-Mathematik auseinandersetzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379080</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379080</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Sat, 06 Oct 2007 11:48:51 GMT</pubDate></item><item><title><![CDATA[Reply to Primzahlen on Sat, 06 Oct 2007 11:52:28 GMT]]></title><description><![CDATA[<p>AFAIK reicht es sogar, nur bis zur Wurzel von x zu prüfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379085</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379085</guid><dc:creator><![CDATA[mad_martin]]></dc:creator><pubDate>Sat, 06 Oct 2007 11:52:28 GMT</pubDate></item><item><title><![CDATA[Reply to Primzahlen on Sat, 06 Oct 2007 12:09:23 GMT]]></title><description><![CDATA[<p>Ja, das mit der Wurzel stimmt, aber ich weiß nicht, ob der Threadersteller dies so einfach begreift. Daher habe ich ihm erstmal den Tipp mit der Hälfte gegeben und dann auf die umfangreiche Theorie verwiesen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379096</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Sat, 06 Oct 2007 12:09:23 GMT</pubDate></item><item><title><![CDATA[Reply to Primzahlen on Sat, 06 Oct 2007 14:27:41 GMT]]></title><description><![CDATA[<p>Hm, das versteh ich jetzt aber auch nicht.<br />
Bsp.: 9 ist prim? -&gt; Prüfen bis 9^(1/2) = 3 -&gt; 2 und 3 sind prim, 9 aber nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379196</guid><dc:creator><![CDATA[moagnus]]></dc:creator><pubDate>Sat, 06 Oct 2007 14:27:41 GMT</pubDate></item><item><title><![CDATA[Reply to Primzahlen on Sat, 06 Oct 2007 14:31:00 GMT]]></title><description><![CDATA[<p>Du musst dann nur bis sqrt(9) nach Teilern suchen! also nur 1, 2 und 3 überprüfen. Bei 3 wirst du fündig und weisst, dass es keine Primzahl ist.</p>
<p>Gruß<br />
Don06</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379199</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Sat, 06 Oct 2007 14:31:00 GMT</pubDate></item><item><title><![CDATA[Reply to Primzahlen on Sat, 06 Oct 2007 16:00:54 GMT]]></title><description><![CDATA[<p>Ups, sehr peinlich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379241</guid><dc:creator><![CDATA[moagnus]]></dc:creator><pubDate>Sat, 06 Oct 2007 16:00:54 GMT</pubDate></item><item><title><![CDATA[Reply to Primzahlen on Sat, 06 Oct 2007 20:31:44 GMT]]></title><description><![CDATA[<p>Nur als Tipp die übliche Herangehensweise an das Problem (Teiler-Suche) ist ziemlich lahm. Abhilfe schafft hier eine interessante Methode von Erathosthenes. Er entwickelte vor 2000 Jahren oder so das <a href="http://de.wikipedia.org/wiki/Sieb_des_Eratosthenes" rel="nofollow">Sieb des Eratosthenes</a>. Die Methode ist verdammt schnell, benötigt aber dementsprechend auch mehr Speicher.</p>
<p>Bei einer Suche bis zu 20. Mio braucht er auf meinem Rechner nur 2,25s, aber ca. 2,4MB SPeicher mehr als die übliche Methode). Die übliche Methode braucht hingegen ca 50s und selbst die von mir eigenhändig optimierte bruacht noch ca. 26s.<br />
Dazu mal ein kleiner Screenshot meiner <a href="http://img252.imageshack.us/my.php?image=printprimesexampleio7.png" rel="nofollow">Testreihe</a>.</p>
<p>Da die Methode des Siebs des Eratosthenes noch nicht optimiert ist, lässt sich da bestimmt noch ein bisschen rausholen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Gruß<br />
Don06</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379409</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Sat, 06 Oct 2007 20:31:44 GMT</pubDate></item><item><title><![CDATA[Reply to Primzahlen on Sun, 07 Oct 2007 16:37:42 GMT]]></title><description><![CDATA[<p>Ich hab versucht das mit den Primzahlen jetzt mit dem &quot;Sieb des Eratosthenes&quot; zu lösen, aber irgendwas stimmt an meinem Code nicht. Ich hab n vorhin mal getestet, und der hat nur &quot;merkwürdige&quot; Ergebnisse ausgespuckt.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

enum NUMBER {N_a=2,N_b=3,N_c=5,N_d=7};

class Prime
{
    public:
    explicit Prime();
    ~Prime();
    void SearchPrime(const unsigned long &amp;value);
    inline const unsigned long * get_PrimeNumber() const {return m_PrimeNumber;}

    private:
    unsigned long *m_PrimeNumber;

};

Prime::Prime()
:m_PrimeNumber(NULL)
{

}

Prime::~Prime()
{
    delete m_PrimeNumber;
}

void Prime::SearchPrime(const unsigned long &amp;value)
{
    unsigned long temp=value;
    NUMBER special_number;
    unsigned long *array=new unsigned long[value];

    for (int j=0;j&lt;4;j++)
    {
        switch(j)
        {
            case 0:
            special_number=N_a;
            break;
            case 1:
            special_number=N_b;
            break;
            case 2:
            special_number=N_c;
            break;
            case 3:
            special_number=N_d;
            break;
        }

        for (unsigned long i=1;temp&lt;2;i++)
        {
            array[i*special_number]=true;
            temp=temp-special_number;
        }

        temp=value;

    }

    unsigned long counter=0;;

    for(unsigned long i=1;i&lt;value;i++)
    {
        if (array[i] != true)
        {
            counter++;
            //cout &lt;&lt; array[i] &lt;&lt; &quot;\n&quot;;  &lt;--TESTEN OBS GEHT
        }
    }

    m_PrimeNumber=new unsigned long[counter];

    for(unsigned long i=1;i&lt;value;i++)
    {
        if (array[i] != true) m_PrimeNumber[i]=array[i];
    }

    delete array;
}
</code></pre>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379846</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Sun, 07 Oct 2007 16:37:42 GMT</pubDate></item><item><title><![CDATA[Reply to Primzahlen on Sun, 07 Oct 2007 17:09:48 GMT]]></title><description><![CDATA[<p>Ähm, deinen Code hab ich jetzt nich so gecheckt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Aber naja, die Technik eignet sich sowieso erst, wenn man im Voraus weiß, bis zu welcher Nummer gesucht werden soll.<br />
Ausserdem solltest du besser std::vector&lt;bool&gt; zum speichern das Primstatus verwenden. sonst verchwendest du bei großen Zahlen zu viel Platz. (Verhältnis 1:8).<br />
Du kannst dir ja mal meine nicht optimierte Version des Algorithmus ansehen:</p>
<pre><code class="language-cpp">typedef unsigned long uint;

void printPrimes(uint max)
{
	std::vector&lt;bool&gt; isPrimeArray(max + 1, true);
	isPrimeArray[0] = false;
	isPrimeArray[1] = false;

	uint factor = 2;
	uint squareRoot = static_cast &lt;uint&gt; 
		(sqrt(static_cast &lt;double&gt; (max)) + 0.5);
	while (factor &lt;= squareRoot)
	{
		uint not_a_prime = factor + factor;
		while (not_a_prime &lt;= max)
		{
			isPrimeArray[not_a_prime] = false;
			not_a_prime += factor;
		}

		++factor;
		while (!isPrimeArray[factor])
			++factor;
	}

	for (uint i = 0; i &lt;= max; ++i)
		if (isPrimeArray[i])
			printf(&quot;%lu\n&quot;, i);
}
</code></pre>
<p>Du solltest die Ausgabe, aber in eine Date umleiten, da sonst die meiste Zeit mit der Konsolenausgabe verschwendet würde.</p>
<p>Also zB so aus der Konsole aufrufen:</p>
<pre><code>PrintPrimes &gt; primes.txt
</code></pre>
<p>Gruß<br />
Don06</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379865</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Sun, 07 Oct 2007 17:09:48 GMT</pubDate></item><item><title><![CDATA[Reply to Primzahlen on Sun, 07 Oct 2007 20:32:59 GMT]]></title><description><![CDATA[<p>Ich hab meinen Code jetzt nochmal überarbeitet, und er funktioniert. Nur ist das blöde, wenn man in meiner Funktion einen größere Zahl als 198 eingibt.....dann gibt er in der Konsole nur noch &quot;1&quot; aus!? Ich verstehe das nicht...an was kann das liegen...und &quot;198&quot;, das hat doch mit nichts nen zusammenhang? Also ich check das nicht....!?! Wenn euch was ins Auge sticht, oder die Zahl &quot;198&quot; euch was sagt fänd ichs Klasse.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Prime
{
    public:
    explicit Prime();
    ~Prime();
    void SearchPrime(const unsigned long &amp;value);
    inline const unsigned long * get_PrimeNumber() const {return m_PrimeNumber;}
    inline unsigned long get_counter() const {return m_counter;}

    private:
    unsigned long *m_PrimeNumber;
    unsigned long m_counter;

};

Prime::Prime()
:m_PrimeNumber(NULL),m_counter(0)
{

}

Prime::~Prime()
{
    delete []m_PrimeNumber;
}

void Prime::SearchPrime(const unsigned long &amp;value)
{
    unsigned long *array=new unsigned long[value];
    unsigned short special_number=0;

    for (short j=0;j&lt;4;j++)
    {
        switch (j)
        {
            case 0:
            special_number=2;
            break;
            case 1:
            special_number=3;
            break;
            case 2:
            special_number=5;
            break;
            case 3:
            special_number=7;
            break;
        }

        for (unsigned long i=1;(special_number*i)&lt;=value;i++)
        {
            array[special_number*i]=0;
        }
    }

    for (unsigned long i=1;i&lt;value;i++)
    {
        if (array[i] != 0) m_counter++;
    }

    m_PrimeNumber=new unsigned long[m_counter];
    unsigned long x=0;

    for (unsigned long i=1;i&lt;value;i++)
    {
        if (array[i] != 0)
        {
            m_PrimeNumber[x]=i;
            x++;
        }
    }

    delete []array;
}

int main()
{
    Prime test;
    test.SearchPrime(10000);
    const unsigned long *temp=test.get_PrimeNumber();
    for (unsigned long i=0;i&lt;test.get_counter();i++)
    {
        cout &lt;&lt; temp[i] &lt;&lt; &quot;\n&quot;;
    }

    return 0;
}
</code></pre>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13710">@Don06</a><br />
Ich schau mir jetzt mal deinen Code an, ich glaub meiner is im Vergleich zu deinem ziemlich hässlich :(...aber gut wenigstens funktioniert mein Code. (bis &quot;198&quot; :D)</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1380075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1380075</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Sun, 07 Oct 2007 20:32:59 GMT</pubDate></item><item><title><![CDATA[Reply to Primzahlen on Mon, 08 Oct 2007 08:14:43 GMT]]></title><description><![CDATA[<p>Ich weiß immer noch nicht, was du mit Deinen <strong>special_number</strong>s anstellen willst.</p>
<p>Für Primzahlen gilt:</p>
<blockquote>
<p>Eine Zahl aus der Menge der natürlichen Zahlen (N) größer 1 ist genau dann eine Primzahl, wenn sie durch 1 und sich selbst ohne Rest teilbar ist.</p>
</blockquote>
<p>Des weiteren gilt:</p>
<blockquote>
<p>Jede Zahl aus der Menge N größer 1 lässt sich als Produkt von Primzahlen darstellen.</p>
</blockquote>
<p><em>Daraus folgt, dass eine natürliche Zahl q größer 1, welche nicht durch eine Primzahl kleiner q ohne Rest teilbar ist, eine Primzahl ist.</em></p>
<p>Bsp:<br />
2 ist nicht durch eine Primzahl teilbar -&gt; Primzahl<br />
3 ist nicht durch eine Primtahl teilbar -&gt; eine Primzahl<br />
4 ist durch 2 teilbar: 2 x 2 = 4 -&gt; keine Primzahl<br />
5 ist nicht durch eine Primzahl teilbar -&gt; Primzahl<br />
6 ist durch 2 und 3 teilbar: 2 x 3 = 6 -&gt; keine Primzahl<br />
7 ist nicht durch eine Primzahl teilbar -&gt; Primzahl<br />
8 ist durch 2 teilbar: 2 x 2 x 2 = 8 -&gt; keine Primzahl<br />
9 ist durch 3 teilbar: 3 x 3 = 9 -&gt; keine Primzahl<br />
10 ist durch 2 und 5 teilbar: 2 x 5 = 10 -&gt; keine Primzahl<br />
...<br />
100 ist durch 2 und 5 teilbar: 2 x 2 x 5 x 5 = 100 -&gt; keine Primzahl<br />
...</p>
<p>Das Thema reizt mich nun auch und ich versuche das ganze mal zu implementieren. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Grüße...</p>
<p>Heiko</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1380256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1380256</guid><dc:creator><![CDATA[bwbg]]></dc:creator><pubDate>Mon, 08 Oct 2007 08:14:43 GMT</pubDate></item><item><title><![CDATA[Reply to Primzahlen on Mon, 08 Oct 2007 09:13:49 GMT]]></title><description><![CDATA[<p>Wer sich mal mit einer lustigen Spielerei auseinandersetzen will, die mit dem Thema zu tun hat: im Buch <a href="https://duckduckgo.com/?q=isbn+0201734842&amp;cppnetbooks" rel="nofollow">C++ Templates | ISBN: 0201734842</a> gibts ein codebeispiel wo mittels Templates Primzahlen gefunden werden. Der Clou: Das Programm hat keine Laufzeit, die Primzahlen werden bereits beim Compilieren als Warnmeldungen ausgegeben!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1380288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1380288</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 08 Oct 2007 09:13:49 GMT</pubDate></item><item><title><![CDATA[Reply to Primzahlen on Mon, 08 Oct 2007 10:45:30 GMT]]></title><description><![CDATA[<p>So, Mittagspause ist fast vorbei und hier ist ein bisschen (funktionierender) Quellcode. Die &quot;kritischen&quot; Stellen sind kommentiert und beziehen sich auf meinen vorangegangenen Beitrag.</p>
<p>Hinweis: Der Algorithmus erhebt nicht den Anspruch besonders performant oder elegant zu sein <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<pre><code class="language-cpp">// primes.cpp
#include &lt;ios&gt;
#include &lt;iostream&gt;
#include &lt;vector&gt;

typedef unsigned long ULONG;

// ==================================================================
// *** Deklaration Klasse PrimeGenerator und Operatoren ***
class PrimeGenerator
{
    friend std::ostream&amp; operator&lt;&lt;(std::ostream&amp;, const PrimeGenerator&amp;);

private:
    // *** Attribute ***
    std::vector&lt;ULONG&gt; primes;

public:
    // *** Konstruktor ***
    PrimeGenerator()
        : primes()
        { }

    /*** Destruktor, Kopierkonstruktor und Zuweisungsoperator werden
        vom Compiler generiert. ***/

    // *** spezielle Methoden ***
    void generate(ULONG max);
        // Generiert Primzahlen bis zur Obergrenze 'max'

};

std::ostream&amp; operator&lt;&lt;(std::ostream&amp; out, const PrimeGenerator&amp; p);

// ==================================================================
// ==================================================================
using namespace std;

// *** main-Funktion ***
int main(int argc, char** args)
    {
        PrimeGenerator pg;
        pg.generate(10000UL);
        cout &lt;&lt; pg &lt;&lt; endl;
        return 0;
    }

// ==================================================================
// *** Definition der Klasse PrimeGenerator und Operatoren ***
void PrimeGenerator::generate(ULONG max)
    {
        ULONG n = 2UL;  // Die Iteration startet mit 2

        do {

            // Prüfen, ob n durch eine (vorhandene) Primzahl ohne
            //  Rest teilbar ist.
            bool devideable = false;
            vector&lt;ULONG&gt;::const_iterator iter = primes.begin();

            for(; iter != primes.end() &amp;&amp; !devideable; iter++) {
                if(n % (*iter) == 0) devideable = true;
            }

            // Ist n nicht durch eine Primzahl teilbar (for-Schleife
            //  wurde vollständig durchlaufen), so handelt es sich bei
            //  n ebenfalls um eine Primzahl und wird in den 
            //  Primzahlen-vector aufgenommen.
            if(!devideable) primes.push_back(n);

        } while(n++ &lt; max);
    }

ostream&amp; operator&lt;&lt;(ostream&amp; out, const PrimeGenerator&amp; p)
    {
        vector&lt;ULONG&gt;::const_iterator iter = p.primes.begin();
        for(; iter != p.primes.end(); iter++) {
            out &lt;&lt; *iter &lt;&lt; &quot; &quot;;
        }        
        return out;
    }
</code></pre>
<p>Ich hoffe, das hilft Dir ein bisschen, um bei der Thematik durchzublicken.</p>
<p>Grüße aus dem (im Moment sonnigen) Sauerland</p>
<p>Heiko</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1380364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1380364</guid><dc:creator><![CDATA[bwbg]]></dc:creator><pubDate>Mon, 08 Oct 2007 10:45:30 GMT</pubDate></item><item><title><![CDATA[Reply to Primzahlen on Mon, 08 Oct 2007 17:35:00 GMT]]></title><description><![CDATA[<p>Des mit dem &quot;special_number&quot; war doch nur wegen dem Algorithmus, Sieb des Eratosthenes. (Beitrag von Don06 <a href="http://de.wikipedia.org/wiki/Sieb_des_Eratosthenes" rel="nofollow">http://de.wikipedia.org/wiki/Sieb_des_Eratosthenes</a> )<br />
Und da muss man doch alles Vielfachen von 2,3,5 und 7 ausschließen.<br />
....<br />
Aber ich gug mir deinen Code glei au noch an.</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1380693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1380693</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Mon, 08 Oct 2007 17:35:00 GMT</pubDate></item><item><title><![CDATA[Reply to Primzahlen on Mon, 08 Oct 2007 19:12:21 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/14886">@Stromberg</a>:<br />
Nein nicht nur 2, 3, 5 und 7. Du musst nach und nach die Vielfachen der gefundene Primzahlen wegstreichen.</p>
<p>@Heiko:<br />
Die Methode mit dem Modulo hatten wir schon, das Problem ist, dass so eine Division viel Zeit kostet. Die Methode der Vielfachen ist selbst gegenüber einer stark optimierten Version ca. 10-20 mal schneller. Und dann kann man ja noch optimieren <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Ich hab die verschiedenen Methoden mal ausgibig getestet:<br />
<a href="http://www.file-upload.net/download-439384/PrimePrintingResults.xls.html" rel="nofollow">PrimePrintResults.xls</a></p>
<p>Besonders bei der Suche nach großen Primzahlen, dauert die Modulo-Methode einfach zu lange. Allerdings hat sie den Vorteil, dass man sich nicht um Speicher kümmern muss. Die Sieb-Methode kann schon mal ziemlich viel davon in Anspruch nehmen.</p>
<p>Gruß<br />
Don06</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1380765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1380765</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Mon, 08 Oct 2007 19:12:21 GMT</pubDate></item><item><title><![CDATA[Reply to Primzahlen on Wed, 10 Oct 2007 14:49:35 GMT]]></title><description><![CDATA[<p>Ach so, nicht nur mit 2,3,5 und 7 sondern auch immer wieder mit den neu gefundenen Primzahlen.....also das hier ist dann mal mein x ter Versuch des in nen Code reinzupressen, ich hab mir deinen gar nicht so genau angeschaut, weil ich will das selber schaffen nud nicht irgendwie abschreiben.....!</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class prime
{
    public:
    prime() {}
    ~prime() {}
    inline bool is_prime(unsigned long &amp;number) const;
    void search_prime(unsigned long &amp;list_end) const;

    private:
    bool array_null(const unsigned long *value,unsigned long &amp;temp) const;

};

bool prime::array_null(const unsigned long *value, unsigned long &amp;temp) const
{
    if (value==0)
    {
        return true;
        temp++;
        array_null(++value,temp);
    }
    else
    {
        return false;
    }
}

bool prime::is_prime(unsigned long &amp;number) const
{
    for (unsigned long i=2;i&lt;number;i++)
    {
        if ((number % i) == 0) return false;
    }
    return true;
}

void prime::search_prime(unsigned long &amp;list_end) const
{
    unsigned long *array=new unsigned long[list_end];
    for (unsigned long i=2;i&lt;=list_end;i++)
    {
        array_null(&amp;array[2-1],i);
        if (is_prime(i))
        {
            for (unsigned long j=2;j*i&lt;=list_end;j++)
            {
                array[j*i-1]=0; //0 = KEINE PRIMZAHL
                //cout &lt;&lt; &quot;!\n&quot;;
            }
        }
     }

     for (unsigned long i=1;i&lt;=list_end;i++)
     {
         if (array[i-1] != 0) cout &lt;&lt; i &lt;&lt; endl;
     }
}

int main()
{
    prime test;
    unsigned long a=197;
    test.search_prime(a);

    return 0;
}
</code></pre>
<p>Verstehst du den jetzigen Code von mir besser? Also ich erstelle ein Feld, und wenn jetzt z.B. &quot;4&quot; keine Primzahl ist, dann schreib ich &quot;array[3]=0;&quot;, oder bei 16 &quot;array[15]=0&quot; und so kann ich das dann gleich immer schnell überprüfen.<br />
Nur das GRÖßTE PROBLEM ist, wenn ich in meine Funktion einen höheren Wert als 196 eintrage, dann steht nur noch &quot;1&quot; u. &quot;2&quot; dran!?! Warum....das verstehe ich überhaupt nicht, warum geht es mit allen Zahlen &lt; 197 aber mit Zahlen &gt; 197 nicht mehr? Da kann doch höchstens bei mir was mit nem Typ nicht stimmen? Aber eigentlich sind alles &quot;unsigned long&quot;.....mh des check ich mal gar net, findet jemand den Fehler vll.?</p>
<p>PS: Das &quot;cout&quot; nimmt ja die ganze Schnelligkeit weg, aber das steht bis jetzt nur zu Testzwecken drin. Wenn es mal gehen sollte, dann schmeiß ich des &quot;cout&quot; raus, und schreib alle Primzahlen in ein Feld rein.</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1382169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1382169</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Wed, 10 Oct 2007 14:49:35 GMT</pubDate></item><item><title><![CDATA[Reply to Primzahlen on Wed, 10 Oct 2007 14:59:42 GMT]]></title><description><![CDATA[<p>Die Methode 'array_null()' ist schonmal eine Katastrophe - erstens werden die Teile hinter dem 'return true;' niemals ausgeführt und zweitens ist in diesem Bereich eine Endlosrekursion enthalten. (und was der Sinn der Funktion sein soll, ist auch nicht klar)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1382178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1382178</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 10 Oct 2007 14:59:42 GMT</pubDate></item><item><title><![CDATA[Reply to Primzahlen on Wed, 10 Oct 2007 18:56:39 GMT]]></title><description><![CDATA[<p>Stimmt die Methode &quot;array_null&quot; war blödsinn, und viel zu umständlich, ich hab das jetzt mit einer &quot;while Schleife&quot; gelöst (Z. 38-41). (Aber ich hab immer so nen Komplex gegen &quot;while Schleifen&quot;, weil ich irgendwo mal gehört habe, das es in einem guten Code nur 1 while Schleife gibt, nämlich die Hauptschleife. Unsinn?)<br />
Aber trotzdem geht meine Funktion nur bis Zahlen &lt; 207, also n bisschen gesteigert hab ich mich schon.....is aber trotzdem merkwürdig!? Wie kann das sein? Ich finde den Fehler einfach nicht, und die Typen stimmen doch auch alle?<br />
Hier der jetzige Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class prime
{
    public:
    prime() {}
    ~prime() {}
    inline bool is_prime(unsigned long &amp;number) const;
    void search_prime(unsigned long &amp;list_end) const;

    private:

};

bool prime::is_prime(unsigned long &amp;number) const
{
    for (unsigned long i=2;i&lt;number;i++)
    {
        if ((number % i) == 0) return false;
    }
    return true;
}

void prime::search_prime(unsigned long &amp;list_end) const
{
    unsigned long *array=new unsigned long[list_end];
    for (unsigned long i=2;i&lt;=list_end;i++)
    {

        while(array[i-1]==0)
        {
            i++;
        }

        if (is_prime(i))
        {
            for (unsigned long j=2;j*i&lt;=list_end;j++)
            {
                array[j*i-1]=0; //0 = KEINE PRIMZAHL
            }
        }
     }

     for (unsigned long i=1;i&lt;=list_end;i++)
     {
         if (array[i-1] != 0) cout &lt;&lt; i &lt;&lt; endl;
     }
}

int main()
{
    prime test;
    unsigned long a=206;
    test.search_prime(a);

    return 0;
}
</code></pre>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1382337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1382337</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Wed, 10 Oct 2007 18:56:39 GMT</pubDate></item><item><title><![CDATA[Reply to Primzahlen on Wed, 10 Oct 2007 19:08:44 GMT]]></title><description><![CDATA[<p>Stromberg schrieb:</p>
<blockquote>
<p>(Aber ich hab immer so nen Komplex gegen &quot;while Schleifen&quot;, weil ich irgendwo mal gehört habe, das es in einem guten Code nur 1 while Schleife gibt, nämlich die Hauptschleife. Unsinn?)</p>
</blockquote>
<p>Wie wäre es mit goto anstatt der while-Schleife? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1382354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1382354</guid><dc:creator><![CDATA[The-Kenny]]></dc:creator><pubDate>Wed, 10 Oct 2007 19:08:44 GMT</pubDate></item></channel></rss>