Wie überprüft man in C, ob eine Zahl eine Primzahl ist?

6 Antworten

Du kannst dir im Prinzip alle Primzahlen bis zu deiner Zahl bilden.

Die Zahlen 2 und 3 schreibst du einfach in den Code rein.

Dann schreibst du folgendes:


int i;
char isPrime;
for(i = 5; i <= gesuchteZahl; i = i+2)
{
isPrime = 1;
for(alle gefundenen Primzahlen, außer 2)
{
if((i % Primzahl) == 0)
{
//i ist keine Primzahl
isPrime = 0;
break;
}
}
if(isPrime)
{
i zu den gefunden Primzahlen dazu geben
}
}

Wenn am Ende, diese Algorithmus deine Zahl bei den gefundenen Primzahlen steht, sprich am letzten Platz deines Arrays ist deine Zahl eine Primzahlen.

Basieren tut der Algorithmus auf der mindestdistanz aller von aller Primzahlen >= 3 diese ist nämlich mindestens 2 (vielleicht auch größer, aber das ist eine einfache untere Schranke), darum inkrementiert man immer um 2.

Das suchen ob es sich bei i nun um einen Primzahl handelt, basiert auf der Primfaktorzerlegung, jede Zahl ist nämlich durch eine Multiplikation von Primzahlen darstellbar und damit auch durch mindestens eine kleinere Primzahl ganzzeilig Teilbar.

AusgegebeneZahl ist schon das Ergebnis einer Division; du prüfst später noch mal, ob der Rest einer Division 0 ist.

Wenn eine Zahl n durch eine andere Zahl k teilbar ist, hat das nichts damit zu tun, ob n auch durch (n-k) teilbar ist.

(Übrigens reicht es, zu prüfen, bis Quotient < Divisor)

1. ) ganz einfach AusgabeZahl % counter ist bei counter = 1 immer wahr.

2.) sie sollten die Funktion verlassen, wenn sie einen Teiler gefunden haben.

3.) Ihre Schleife sollte von 2 beginnen und so lange gehen bis das qudrat größer als die eingabezahl ist.

 
for( int i = 2 ; i*i <= eingabezahl ; i++ )
if( eingabezahl % i == 0 )
{
printf("Zahl %i ist durch %i teilbar.",eingabezahl,i);
return 0;
}

printf("Zahl %i ist prim.",eingabezahl);

Wörterbuch programmiern in C

Hallo. :)

Ich hoffe von euch kann mir jemand meinen Fehler sagen. Ich soll nämlich ein Wörterbuch programmiern und wenn ich ein Wort eingeben, das ich in der Datenbank schon eingespeichter habe, funktioniert alles. Aber, wenn ein Wort kommt, dass noch nicht gespeichert ist, schmeißts mich immer raus. >.> ...eigentlich sollte eine Anfrage kommen, ob man das Wort speichern will...

also hier mal das Programm:

include<stdio.h>

include<conio.h>

include<string.h>

define MAX 100

typedef struct woerterbuch {

char wort[30+1];
char word[30+1];

}Buch;

void main() { int i=0; char search[20]; char suchen[20]; int zahl, gefunden=1, x=0; Buch liste[MAX]={"Hallo", "hello", "Auto", "car", "Sonne", "sun"};

printf("Geben Sie ein, ob Sie von Englisch auf Deutsch (1) oder von Deutsch auf Englisch (2) uebersetzen wollen! ");
scanf("%d", &zahl);

if(zahl==1)
{
    printf("\nGeben Sie ein englisches Wort ein, das Sie uebersetzen wollen! ");
    scanf("%s", search);

    do
    {   
        if(strcmp(search, liste[i].word)==0)
        {
            printf("Deutsch: %s ", liste[i].wort);
            x=1;
            gefunden=0;
        }

        i++;

    }while(x!=1);

    if(gefunden==1)
    {
        printf("\nIhr Wort ist nicht in der Datenbank enthalten!");
        /*printf("\nWenn Sie das Wort in die Datenbank hinzufügen wollen, drücken sie 1.");
        scanf("%d", add);

        if(add==1)
        {
            printf("Das deutsche Wort: ");
            scanf("%s", liste[i+1].wort);

            printf("Das englische Wort: ");
            scanf("%s", liste[i+1].word);
        }*/
    }
}

else
{
    printf("\nGeben Sie ein deutsches Wort ein, das Sie uebersetzen wollen! ");
    scanf("%s", suchen);

    do
    {   
        if(strcmp(suchen, liste[i].wort)==0)
        {
            printf("Englisch: %s ", liste[i].word);
            gefunden++;
            x=1;
        }
    i++;

    }while(x!=1);

    if(gefunden==1)
    {
        printf("\nIhr Wort ist nicht in der Datenbank enthalten!");
    }
}

getch();

}

Vielleicht kann mir hier jemand helfen. ? :)

Danke, schonmal im voraus. :)

P.S: und bitte keine Kommentare zum Stil oder sonst was...bin nicht das größte Genie im Programmiern, das weiß ich selber. :)

...zur Frage

Was bedeutet das i++ in diesem Programm?

Hier der Code das programm liest einen satz ein und gibt jedes wort in einer neuen zeile wieder nur wofür das i++ am ende? ich kenns normal nur in ner forschleife um die steigerung z.b. also i=i+1 anzugeben ?!

#include <stdio.h>
main() {
int i=0;
char text[100];
printf("\nBitte einen Satz eintragen.\n");
gets(text);
while(text[i]) {
if(text[i] != '  ')
printf("%c",text[i]);
else
printf("\n");
i++;
}
}
...zur Frage

Mein Java Programm gibt "Primzahl" 9 aus?!?!?!?!?

int zahl, Limit, P;

zahl = 1;                        //Primzahlen von...
Limit = 10;                      //...bis                     
boolean Prim = true;             // Prim = true wenn "zahl" eine Primzahl ist

System.out.println("Die Primzahlen zw. den Zahlen " + zahl + " und " + Limit + " sind: ");

while (zahl<=Limit) {            // solang "zahl" kleiner als "Limit" ist 
  if (zahl%2 == 0) {
    Prim = false; 

  } 
  if (Prim) {
    System.out.println(zahl);

  } 
  else{

    Prim = true;

  }
  zahl++;
}
...zur Frage

Mit was anfangen? Programmieren?

Hi! Ich wollte in Zukunft spiele programmieren, worauf ich auf jemand gestoßen bin der meinte C++ ist Pflicht so wie viele andere die dann dazu gehören, ich sollte aber mit Visual Basic anfangen da man das später für Große Spiele auch braucht (Er sagte aber selbst auch das er kein gelernter ITler ist als vorwarnung)

Was brauche ich denn später alles? jetza bringt es jah sowieso nichts da ich das erst alles mal kennen lernen muss.. was ich dazu gefunden hatte waren nh paar andere Threads auf anderen Foren die mir nur die Frage zu C++ etwas beantwortet haben aber mehr nicht..

Kurzgefasst: Was brauche ich später alles für ProgrammierSprachen um 3D Spiele zu erstellen und mit welcher wäre es gut anzufangen?

...zur Frage

Was möchtest Du wissen?