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