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
#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
