C :: Aufgabe #70 :: Lösung #3
4 Lösungen
#70
Giuga-Zahlen berechnen
Anfänger - C
von Gustl
- 13.02.2015 um 12:42 Uhr
Eine natürliche Zahl n ist eine Giuga-Zahl, wenn alle ihre Primteiler p den Wert n/p - 1 teilen.
Schreibe ein Programm welches alle Giuga-Zahlen bis zu einer festen Obergrenze ausgibt.
Erläuterung zu einer Giuga-Zahl findest du hier: Wikipedia
Schreibe ein Programm welches alle Giuga-Zahlen bis zu einer festen Obergrenze ausgibt.
Erläuterung zu einer Giuga-Zahl findest du hier: Wikipedia
#3
von eulerscheZhl (5230 Punkte)
- 10.03.2015 um 16:41 Uhr
#define LIMIT 1000000
#include <stdio.h>
void getSmallestFactor(int array[]) {
int i, j;
for (i = 2; i * i <= LIMIT; i++) {
if (array [i] == 0) {
for (j = 2 * i; j <= LIMIT; j += i) {
if (array [j] == 0) {
array [j] = i;
}
}
}
}
}
int isGiuga(int n, const int primes[]) {
int current = n;
while (primes[current] != 0) {
if ((n / primes [current] - 1) % primes [current] != 0)
return 0;
current /= primes [current];
}
return n != current && (n / current - 1) % current == 0;
}
int main() {
int primes[LIMIT + 1] = {0};
int i;
getSmallestFactor (primes);
for (i = 1; i <= LIMIT; i++) {
if (isGiuga (i, primes)) {
printf("%i\n", i);
}
}
return 0;
}Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
