<?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>Hi,</p>
<p>anbei code um primzahlen auszugeben...<br />
warum brauch ich hier folgende bedingung? j*j &lt;= i</p>
<pre><code>#include &lt;iostream&gt;

void output_prime(int m) {
  for (int i = 2; i &lt;= m; i++) {
        bool is_prime = true;

        for (int j = 2; j*j &lt;= i; j++) {

            if (i % j == 0) {
                is_prime = false;
                break;    
            }
        }   

        if (is_prime) {
          cout &lt;&lt; i &lt;&lt; &quot; &quot;;
        }
    }
}

int main() {  
  output_prime(200);
  return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/335530/primzahlen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Apr 2026 13:33:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/335530.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 24 Nov 2015 19:07:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to primzahlen on Tue, 24 Nov 2015 19:07:11 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>anbei code um primzahlen auszugeben...<br />
warum brauch ich hier folgende bedingung? j*j &lt;= i</p>
<pre><code>#include &lt;iostream&gt;

void output_prime(int m) {
  for (int i = 2; i &lt;= m; i++) {
        bool is_prime = true;

        for (int j = 2; j*j &lt;= i; j++) {

            if (i % j == 0) {
                is_prime = false;
                break;    
            }
        }   

        if (is_prime) {
          cout &lt;&lt; i &lt;&lt; &quot; &quot;;
        }
    }
}

int main() {  
  output_prime(200);
  return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2476919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2476919</guid><dc:creator><![CDATA[mike1]]></dc:creator><pubDate>Tue, 24 Nov 2015 19:07:11 GMT</pubDate></item><item><title><![CDATA[Reply to primzahlen on Tue, 24 Nov 2015 19:12:04 GMT]]></title><description><![CDATA[<p>Man braucht es nicht. Du könntest auch alle Zahlen von 2 bis i-1 testen. Das ist eine Optimierung. Es reicht eigentlich von 2 bis sqrt(i) zu testen. Wenn man bis dahin keinen Teiler gefunden hat, dann ist die Zahl eine Primzahl (warum das so ist kannst du dir einfach überlegen). Die Bedingung <code>j &lt;= sqrt(i)</code> wurde einfach umgeformt zu <code>j*j &lt;= i</code> womit wir bei deinem Code sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2476920</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2476920</guid><dc:creator><![CDATA[sebi707]]></dc:creator><pubDate>Tue, 24 Nov 2015 19:12:04 GMT</pubDate></item><item><title><![CDATA[Reply to primzahlen on Tue, 24 Nov 2015 19:26:55 GMT]]></title><description><![CDATA[<p>sebi707 schrieb:</p>
<blockquote>
<p>Die Bedingung <code>j &lt;= sqrt(i)</code> wurde einfach umgeformt zu <code>j*j &lt;= i</code></p>
</blockquote>
<p>vielleicht weil jemand dachte Multiplizieren geht schneller als Wurzelziehen (ob das stimmt weiß ich nicht).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2476923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2476923</guid><dc:creator><![CDATA[hauskater]]></dc:creator><pubDate>Tue, 24 Nov 2015 19:26:55 GMT</pubDate></item><item><title><![CDATA[Reply to primzahlen on Tue, 24 Nov 2015 19:32:35 GMT]]></title><description><![CDATA[<p>Für eine einzelne Zahl mit Sicherheit. Allerdings muss man bedenken, dass man bei dieser Methode in jedem Durchlauf etwas multiplizieren muss, die Wurzel müsste man aber nur einmal ziehen. Allerdings gibt es im Standard keine sqrt Funktion für Integer und mischen mit float/double finde ich immer ungut. Wer wirklich einen schnellen Primzahltest braucht nutzt sowieso andere Algorithmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2476926</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2476926</guid><dc:creator><![CDATA[sebi707]]></dc:creator><pubDate>Tue, 24 Nov 2015 19:32:35 GMT</pubDate></item><item><title><![CDATA[Reply to primzahlen on Wed, 25 Nov 2015 11:25:22 GMT]]></title><description><![CDATA[<blockquote>
<p>Allerdings gibt es im Standard keine sqrt Funktion für Integer und mischen mit float/double finde ich immer ungut.</p>
</blockquote>
<p>In diesem Fall in Ordnung, da wir mit <code>int</code> s arbeiten. <code>double</code> 's Mantisse packt das.</p>
<blockquote>
<p>ob das stimmt weiß ich nicht</p>
</blockquote>
<p>Wurzelziehen ist asymptotisch viel, viel besser. Daher ist es auch i.d.R. effizienter, die Wurzel zu ziehen und Teiler unter ihr zu suchen.</p>
<p>Wir können gar eine obere Schranke der Wurzel selbst berechnen, die nah genug ist und nicht zu viele, überflüssige Prüf-Divisionen impliziert. Aber ob das wirklich signifikant schneller ist als <code>sqrt</code> …</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2477021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2477021</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Wed, 25 Nov 2015 11:25:22 GMT</pubDate></item><item><title><![CDATA[Reply to primzahlen on Wed, 25 Nov 2015 12:16:12 GMT]]></title><description><![CDATA[<p>Unser Prof sieht das auch tatsächlich als Fehler, wenn man sqrt auf int's anwendet.<br />
Das Gleiche bei pow (wir programmieren C).</p>
<p>War aber auch zumindest auf meinem System und unter VS um ein Faktor 2 schneller, zu Quadrieren anstatt Wurzel zu ziehen.</p>
<p>Das einzige Problem vom Quadrieren ist ja, dass man schneller bei hohen Zahlen den Zahlenbereich der verwendeten Datenstruktur verlässt, als wenn man die Wurzel verwenden würde.</p>
<p>Aber das sollte bei solchen Beispielen wohl eher weniger relevant sein, zur not kann man sich ja immer noch dicken Zahlen besorgen, falls man das denn will.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2477025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2477025</guid><dc:creator><![CDATA[ll]]></dc:creator><pubDate>Wed, 25 Nov 2015 12:16:12 GMT</pubDate></item><item><title><![CDATA[Reply to primzahlen on Wed, 25 Nov 2015 12:57:15 GMT]]></title><description><![CDATA[<blockquote>
<p>War aber auch zumindest auf meinem System und unter VS um ein Faktor 2 schneller, zu Quadrieren anstatt Wurzel zu ziehen.</p>
</blockquote>
<p>Etwa zehntausend Multiplikationen sollen doppelt so schnell sein wie ein einziges <code>sqrt</code> ?!<br />
Oder was für N hast du probiert? Und wie genau hast du gemessen?</p>
<blockquote>
<p>Das Gleiche bei pow (wir programmieren C).</p>
</blockquote>
<p>Hmm. Also entsprechende Funktionen selber zu proggern und zu verifizieren wäre sinnvoll und gut, aber <code>sqrt</code> packt <code>int</code> s, alle mindestens auf x86. Dafür leg' ich meine Hand ins Feuer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2477031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2477031</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Wed, 25 Nov 2015 12:57:15 GMT</pubDate></item><item><title><![CDATA[Reply to primzahlen on Wed, 25 Nov 2015 17:21:35 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<blockquote>
<p>War aber auch zumindest auf meinem System und unter VS um ein Faktor 2 schneller, zu Quadrieren anstatt Wurzel zu ziehen.</p>
</blockquote>
<p>Etwa zehntausend Multiplikationen sollen doppelt so schnell sein wie ein einziges <code>sqrt</code> ?!<br />
Oder was für N hast du probiert? Und wie genau hast du gemessen?</p>
</blockquote>
<p>Könnte mir vorstellen, dass ers ohne Optimierungen hat, sod ass in jedem Schleifendurchlauf auch die Wurzel nochmal berechnet wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2477077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2477077</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 25 Nov 2015 17:21:35 GMT</pubDate></item></channel></rss>