C :: Aufgabe #70 :: Lösung #4
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
#4
von kathleenw (3600 Punkte)
- 09.07.2020 um 12:10 Uhr
C-Code
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> int main(void) { int grenze, zahl, z, i, p, anzahl_faktoren; bool gefunden, giuga; int faktoren[100]={0}; printf("Bis zu welcher Grenze sollen die Giuga Zahlen berechnet werden? \n"); if (scanf("%d", &grenze)!=1) { printf("Zahl wurde falsch eingegeben. \n"); return EXIT_FAILURE; } fflush(stdin); printf("\n***************************"); printf("\n*** Giuga Zahlen bis %d ", grenze); printf("\n***************************\n\n"); for (zahl=2;zahl<=grenze;zahl++) { //faktoren[100] = {0}; anzahl_faktoren=0; giuga = true; //Primfaktorzerlegung z=zahl; while (z>1) { i =2; gefunden = false; while(i*i<=z && gefunden == false) { if (z%i == 0) { gefunden = true; p=i; } else i++; } if (gefunden == false) p=z; faktoren[anzahl_faktoren] = p; anzahl_faktoren++; z = z / p; } //Prüfe auf Giuga Zahl for (i=0;i<anzahl_faktoren;i++) { if (((zahl/faktoren[i])-1)%faktoren[i]!=0 || ((zahl/faktoren[i])-1)==0) giuga = false; } if (giuga==true) printf("%d \t", zahl); } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1