C :: Aufgabe #70 :: Lösung #4

4 Lösungen Lösungen öffentlich
#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
#4
vote_ok
von kathleenw (3600 Punkte) - 09.07.2020 um 12:10 Uhr
Quellcode ausblenden 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

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
1822514

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.