#include #include #include int Hier = 3; /*Legt die Basis fest*/ int Grenze = 1000; /*Legt den Bereich fest, fuer den a(k) berechnet wird*/ mpz_t ErgFeld[1000]; FILE *Ausgabe; int Test(mpz_t k) { int Stelle; mpz_t Basis; mpz_init_set_ui(Basis, Hier); mpz_t Wert; mpz_init(Wert); mpz_powm(Wert, Basis, k, k); if(mpz_cmp_si(Wert, Grenze)<0) { Stelle = mpz_get_ui(Wert); if(mpz_cmp_si(ErgFeld[Stelle], -1)== 0) { mpz_set(ErgFeld[Stelle], k); mpz_clear(Basis); mpz_clear(Wert); gmp_fprintf(Ausgabe, "a(%d) = %Zd\n", Stelle, k); fflush(Ausgabe); return(1); } } mpz_clear(Basis); mpz_clear(Wert); return(0); } int main() { int i; mpz_t Zaehler; int Fehler=Grenze; mpz_init_set_ui(Zaehler, 2); Ausgabe = fopen("3Erg.txt", "w"); if (Ausgabe == NULL) { printf("Dateifehler!\n"); } else { for(i=0; i2) { Fehler -= Test(Zaehler); mpz_add_ui(Zaehler, Zaehler, 1); if(mpz_fdiv_ui(Zaehler, 1000000)== 0) { gmp_printf("Jetzt: %Zd\n", Zaehler); printf("Es fehlen noch %d.\n", Fehler); } } } mpz_clear(Zaehler); fclose(Ausgabe); return(0); }