#1
30.11.2016 um 15:03 UhrKorrektur: die innere Schleife muss von 1 starten, um alle (n,k)-Kombinationen zu erfassen:
for (k=1; k<=1000; k++) { ...
C :: Aufgabe #129 :: Lösung #1
/*
* 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);
}
Kommentare:
devnull
Punkte: 8870
42 Aufgaben
134 Lösungen
16 Kommentare
for (k=1; k<=1000; k++) { ...