C Primfaktorzerlegung; 2 und 3 werden nicht als "ist prim." ausgegeben

FeWeis

Newbie
Registriert
Apr. 2017
Beiträge
7
Hey Leute,

ich habe mal eine Frage und zwar: Mein Programm funktioniert soweit einwandfrei, aber wenn ich '2' oder '3' eingebe, dann wird nur 2 oder halt 3 und eben nicht "2(oder 3) ist prim." ausgegeben... Bei allen anderen Primzahlen funktioniert es aber :/... Ich habe auch schon versucht, es mit in die if-Anweisung (Zeile 29) zu schreiben, also dann praktisch:
Code:
if (z % h != 0 || z == 2 || z == 3){
Das funktioniert aber nicht, vielleicht fällt euch ja was auf und ihr könnt mir ein bisschen auf die Sprünge helfen? :)

Hier noch die Aufgabenstellung, danke schon mal :)!
Unbenannt.png



Code:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int z;
    int h = 2;
   	scanf("%d",&z);

   	if (z < 2){
   		printf("%d kann nicht zerlegt werden.\n", z);
   		return 0;
   		}
    int i = 0;
    for (i = 2; i <= z/2; i++){
        if (z % i == 0){
            while(z % h == 0){
                printf("%d\n", h);
                z = z / h;
            }
            while (z != 1){
                while (z % h == 0){
                    printf("%d\n", h);
                    z = z / h;
                }
                h += 1;
            }
        }
        else{
            printf ("%d ist prim.\n", z ) ;
            return 0;
	   }
    }
    return 0;
}
 
Überleg dir mal was passiert wenn die Eingabe (z) den Wert 2 oder 3 hat und achte da mal besonders auf die Zeile 15 ;)

Dann wird auch klar warum das ändern der Zeile 29 gar keine Auswirkung haben kann.
 
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben