Brauche HILFE in C!!!!



  • zu eins:
    2+4+6++n2+n=2k=1n/2k=(n/2)((n/2)+1)2+4+6+\cdots+n-2+n=2\sum_{k=1}^{n/2} k = (n/2)((n/2)+1)
    falls n gerade ist. mit dieser information kann es jeder nach ein par stunden lösen.
    😃

    ich habe gerade ein ganz tolle idee gehabt. damit die leute die faq sehen könnte man ja einen sticki thread oben rein machen der heisst:
    "HABE HILFE!!!!!!!!!" 😃



  • zu 2) Schau mal in deinem Mathebuch (so ca. 8./9. Klasse) unter ,,Sieb des Erastothenes'' nach.



  • Stentor schrieb:

    zu 2) Schau mal in deinem Mathebuch (so ca. 8./9. Klasse) unter ,,Sieb des Erastothenes'' nach.

    Warum so kompliziert?

    Eine Primzahl ist einfach eine Zahl die nur durch 1 und sich selbst ohne Rest dividierbar ist. Dies bedeutet:
    n ist durch 2..n-1 nicht glatt dividierbar, wenn n eine primzahl ist.
    Den Rest einer Division bekommt man per % (Modulo)

    und schon kann man das Problem lösen, ohne sich das Sieb oder sonstige komplizierte Sachen anzutun.

    Es läuft nicht schnell - aber dafür funktioniert es 🙂

    Das Sieb ist zwar auch nicht so kompliziert, aber für einen Anfänger sicher nicht geeignet.



  • japro schrieb:

    zu eins:
    2+4+6++n2+n=2k=1n/2k=(n/2)((n/2)+1)2+4+6+\cdots+n-2+n=2\sum_{k=1}^{n/2} k = (n/2)((n/2)+1)

    Wow, wo hast Du denn die Formel gefunden ?

    SirLant schrieb:

    Und die erste Aufgabe geht doch auch ohne so ne rießige Formel:

    Ja schon, (wo ist die Formel rießig ?)
    aber die Loesung von Japro finde ich doch sehr
    elegant. Ich habe naemlich mal
    Zahlen im Bereich 10 bis 2000 MioMio eingegeben und
    da braucht ein P4 je nach Zahl schon bis zu ueber 40 Sekunden,
    waehrend die Formel das Ergebnis gleich ausspuckt.



  • Und es gibt Ausnahmen die vom Sieb nicht erfasst werden.

    Und die erste Aufgabe geht doch auch ohne so ne rießige Formel:
    int erg = 0;
    for (i = 0; i <= 100; i += 2)
    erg += i;



  • SirLant schrieb:

    Und es gibt Ausnahmen die vom Sieb nicht erfasst werden.

    Und die waeren?



  • Shade Of Mine schrieb:

    Warum so kompliziert?

    😕

    Wenn man deinen Divisorbereich 2 - (n - 1) einschränkt auf 2 - sqrt(n) ist das doch schon das Sieb.

    Also

    bool isprim( int x ) 
    {
        for( int i = 2 ; i <= sqrt(x) ; i += 2 )
            if( x % i == 0 ) return 0;
        return 1;
    }
    

    MfF Stentor



  • Stentor schrieb:

    Shade Of Mine schrieb:

    Warum so kompliziert?

    😕

    Wenn man deinen Divisorbereich 2 - (n - 1) einschränkt auf 2 - sqrt(n) ist das doch schon das Sieb.

    Nein, das Sieb arbeitet gewoehnlich auf allen natuerlichen Zahlen (kleiner einer gewissen Grenze) gleichzeitig, indem erst alle Vielfachen von 2, dann von 3, etc. rausgestrichen werden. Shade will (genauso wie Du mit Deinem Code) nur eine einzelne Zahl testen.



  • SG1 schrieb:

    SirLant schrieb:

    Und es gibt Ausnahmen die vom Sieb nicht erfasst werden.

    Und die waeren?

    das würde mich auch interessieren.



  • japro schrieb:

    SG1 schrieb:

    SirLant schrieb:

    Und es gibt Ausnahmen die vom Sieb nicht erfasst werden.

    Und die waeren?

    das würde mich auch interessieren.

    Das stand mal in einem meiner C Bücher, mal sehen ob ich das Buch noch habe.
    Mal suchen.



  • Nein, das Sieb arbeitet gewoehnlich auf allen natuerlichen Zahlen (kleiner einer gewissen Grenze) gleichzeitig, indem erst alle Vielfachen von 2, dann von 3, etc. rausgestrichen werden. Shade will (genauso wie Du mit Deinem Code) nur eine einzelne Zahl testen.

    *patsch* 🙄
    Na gut:

    bool isnoprim[ 100 ];//kann man ja noch mit 1 initiallisiern, wäre dann isprim
    
    void prim( void ) {
        for( int i = 2 ; i < 10 ; i++ )
            for( int t = 2 ; t * i <= 100 ; t++ )
                isnoprim[ t * i ] = 1;
    }
    

    @SirLant: Dürfte eigentlich keine Ausnahem geben, da eine Primzahl als Zahl, die nur durch sich selbst und 1 teilbar ist, definiert ist. Da eine Primzahl
    Element von N ist, ist jeder potentielle Teiler < Primzahl. Wenn man jedoch alle Vielfache der Zahlen herausstreicht, hat man die Primzahlen. Wo soll das Problem sein?



  • Ist das C oder C++ was du da geschrieben hast??
    Die erste Aufgabe hab ich jetzt, kann jetzt bidde ma einer die 2 Aufgabe machen!
    THX
    jarule2001



  • öhm .. alles klar? wo ist dein ansatz, bitte??



  • jarule2001 schrieb:

    Die erste Aufgabe hab ich jetzt, kann jetzt bidde ma einer die 2 Aufgabe machen!

    Nur weil du hier anonym bist, brauchst du nicht unhöflich werden, schließlich willst du von den Leuten etwas. Die machen das sogar freiwillig und kostenlos... aber auch nur, wenn man freundlich zu ihnen ist.



  • Ich würde sagen das du dich jetzt mal etwas schlau machst und in ein paar Bücher schaust.Schließlich sollst du ja etwas dabei lernen...Vielleicht eine kleine Hilfe wenn du die erste Aufgabe hast,müßtest du die zweite auch von allein bewältigen.



  • @SirLant: Meinst du vielleicht Pseudoprimzahlen bzw. Carmichaelzahlen?
    Hat aber nichts mit dem Sieb des Eratosthenes sondern mit dem kleinen Fermatschen Satz zu tun. 😕


Anmelden zum Antworten