Kleines Problem mit Programm zum Fermatschen Primzahlentest



  • Hallo,

    ich habe ein Programm zum Fermatschen Primzahlentest geschreiben, welches erkennen soll, ob eine Zahl, eine Primzahl ist, oder nicht. Es funktioniert auch, lediglich bei 23 und größeren Zahlen klappt es nicht mehr.

    Ich habe eine Vermutung, da ich die Warnung von einem möglichen Datenverlust (double zu int, Zeile 15) bekomme. Leider weiß ich nicht, wie ich den Fehler umgehen kann und ob er wirklich die Ursache ist.

    Hier das Programm:

    #include <math.h>
    #include <stdio.h>
    
    int a, b, c, z; // Variablen angeben
    
    int main(void) 
    {
        printf("\nBitte Zahl eingeben z = "); scanf_s ("%d", &z); // Eingabe und Auslesen der Variable z
        do // Anfang der Schleife
        {
            printf("\nBitte Basis eingeben b = "); scanf_s("%d", &b); // Basis eingeben und Auslesen
        } while(b>=z); //Bedingung der Schleife
    
        a = pow(b, z-1); // Exponentialfunktion
        c = a % z; //Einbindung der mod Bedingung
        if (c==1) { // Falls c=1, dann Ausgabe: Primzahl
             printf("Primzahl");
        } else {
             printf("keine Primzahl"); //falls nicht, dann Ausgabe: keine Primzahl
    	}
        return 0;
    }
    

    Schonmal vielen Dank für die Hilfe. Das Programm ist in C geschrieben.

    Greetz,
    TJ101



  • Nicht pow benutzen, sondern ein pow selber schreiben, das nach jedem teilschritt mod rechnet. so kannst du locker (a^b)%c rechnen, ohne langzahlen zu brauchen.


Anmelden zum Antworten