Ich habe ein wenig mit C angefangen. Was macht man als erstes Programm? Was wohl jeder schon mal programmiert hat: Primzahlberechnung.
Was lässt sich an diesem Programm verbessern? Besonders der Switch gefällt mir nicht:
Wenn ich nicht mehr weiter kann,
mach' ich einen Schalter an.
#include <stdio.h>
#define MAX 500000
int main()
{
long int z[MAX], iz, i, i2, j, k, l;
int sw;
/* in z[] werden die gefundenen Primzahlen
gespeichert. Jede weitere Zahl kann
nur dann eine Primzahl sein, wenn sie
sich durch eine der gefundenen Primzah-
len teilen läßt. Diese Prüfung braucht
aber nur bis zum halben Wert der aktuell
zu prüfenden Zahl i durchgeführt werden
(Um Widerspruch wird gebeten).
i=aktuell auf Primzahl zu prüfende Zahl
j=Index(z) für Primzahlprüfung
k=aktuelle Primzahl für Prüfung mit i */
iz=2;
z[1]=2;
z[2]=3;
printf ("2,3");
/* maximal MAX Primzahlen berechnen */
for (i=1; iz<MAX && i<2147483647 ; i++)
{
k=z[1];
i2=i/2;
sw=0;
/* Prüfe, ob i durch bisherige Primzahlen
bis max. i/2 teilbar ist */
for (j=1; k<=i2 ; j++, k=z[j])
{
sw=1;
l=(i/k);
if (l*k==i)
{
sw=0;
break;
};
};
if (sw)
{
z[++iz]=i;
printf (",%d",i);
};
};
printf ("\nAnzahl=%d \n", iz);
return 0;
}
cottonwood (10.878) 164x Beste Antwort 272x "Danke"
|