T
Taxotic
Gast
Nabend,
Ich lerne gerade für die bevorstehende Info-Klausur und stoße immer wieder auf Probleme.
Bei den letzten Aufgaben wurde mir hier immer sehr schnell geholfen, dafür bin ich Euch sehr dankbar! Wenn ihr Lust habt, dann werft doch mal ein Blick auf das folgende Problem:
Primzahlen ermitteln: Sieb des Eratostenes
Eine Liste aller Zahlen (bis n) wird angelegt. Alle Zahlen, die das Produkt der Multiplikation
zweier Zahlen zwischen 2 und n sind, werden aus der Liste gestrichen.
Bei meinem Code werden nun immer alle Zahlen ausgegeben, vielleicht liegt das Problem in der Verschachtelung der for-Schleifen?
Ich lerne gerade für die bevorstehende Info-Klausur und stoße immer wieder auf Probleme.
Bei den letzten Aufgaben wurde mir hier immer sehr schnell geholfen, dafür bin ich Euch sehr dankbar! Wenn ihr Lust habt, dann werft doch mal ein Blick auf das folgende Problem:
Primzahlen ermitteln: Sieb des Eratostenes
Eine Liste aller Zahlen (bis n) wird angelegt. Alle Zahlen, die das Produkt der Multiplikation
zweier Zahlen zwischen 2 und n sind, werden aus der Liste gestrichen.
Bei meinem Code werden nun immer alle Zahlen ausgegeben, vielleicht liegt das Problem in der Verschachtelung der for-Schleifen?
Code:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *liste;
int i;
int kprimzahl;
int anzahl;
printf("Bis zu welcher Zahl sollen die Primzahlen ausgegeben werden?\n");
scanf("%i",&anzahl);
liste= (int *) malloc (anzahl* sizeof(int));
//Array füllen:
for (i=0; i<anzahl; i++)
{
liste[i]=i;
}
//Berechnung:
for (i=0; i<anzahl; i++)
{
kprimzahl=2*i; //keine Primzahl ist das Produkt aus 2*i
for (i=0; i<anzahl; i++) // Vergleiche alle Einträge der Liste mit "kPrimzahl"
{
if (kprimzahl==liste[i]) //Stimmt ein Eintrag überein, so schreibe 0 in die Liste
liste[i]=0;
}
}
//Ausgabe:
for (i=0; i<anzahl; i++)
{ if (liste[i] != 0) //Ist der Eintrag !=0, so gebe ihn aus
{
printf("%i\n",liste[i]);
}
}
return 0;
}