C :: Aufgabe #129

1 Lösung Lösung öffentlich

Große Potenzen und Fakultäten

Anfänger - C von hollst - 27.09.2016 um 11:24 Uhr
Man zeige numerisch, dass es (wahrscheinlich) keine natürlichen Zahlenpaare (N, K) mit N >= 1 und K >= 1 gibt,
die folgender Gleichung genügen: (N + K)! = N^N (sprich N hoch N). N und K sollen bei der Simulation jeweils <= 1.000 sein.

Lösungen:

1 Kommentar
vote_ok
von devnull (8870 Punkte) - 30.11.2016 um 10:12 Uhr
Quellcode ausblenden C-Code
/*
 * Große Potenzen und Fakultäten
 * gcc -Wall -o gpf gpf.c -lgmp
 *
 */
# include <stdio.h>
# include <gmp.h>

int main(void)
{
    mpz_t NKF;
    mpz_t NPN;

    unsigned int n, k;
    int pairs=0;

    mpz_init(NKF);
    mpz_init(NPN);

	for (n=1; n<=1000; n++) {
	  mpz_ui_pow_ui(NPN, (unsigned long)n, (unsigned long)n);
	  for (k=n; k<=1000; k++) {
        mpz_fac_ui(NKF, (unsigned long)(n+k));
        if (mpz_cmp(NPN, NKF) == 0) {
			printf("pair found: n=%u, k=%u\n", n, k);
			++pairs;
		}
	  }
    }
    if (pairs == 0)
      printf("no pairs found in the range 1..1000\n");
    return(0);
}