"sieb des eratosthenes" - finde meinen fehler nicht - Seite 2

Seite 2 von 2 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/quotsieb_des_eratosthenesquot_finde_meinen_fehler__154847/page_2 - zur Vollversion wechseln!


vandroiy schrieb am 23.12.2005 um 23:56

Zitat von Gex
von mir aus auch if-anweisung oder sonstwas. tut hier aber jetzt relativ wenig zur sache :o
Weil sie`s so gelernt bekommen. Ich höre das immer wieder...


smashIt schrieb am 24.12.2005 um 00:08

mich wunderts nciht das viele if als schleife bezeichnen
sieht ja vom code her fast genauso aus
allso if(bla){nochmehr bla;} im vergleich zu for(bla;bla;bla){schonwieder bla;}


Neo-=IuE=- schrieb am 24.12.2005 um 11:07

Zitat von Gex
najo, stimmt schon, ist vielleicht etwas unschön.
aber das hier:
CODE
ändert am ergebnis auch nix...

oja der unterschied ist, dass du deine zählvariable nicht verwendest
im ursprünglichen Programm hättest eigentlich bei calc = i*j einfach calc = (i+1)*j schreiben können, und bei dem array zugriff calc-1 statt calc
weiters musst beim ausgeben k+1 statt k ausgeben
und problem gelöst und die abbruchbedingung vor dem zugriff auf das array und böse überraschung bleiben einem erspart ;)

hier der code von dir nur verändert so, dass er geht
Code:
#include<stdlib.h>
#include<stdio.h>

int size,calc;

int main(void)
{
	printf("Ich moechte die Primzahlen bis zu diesem Wert berechnen:\n");
	scanf("%d",&size);

	// Bool'sches Array wird definiert
	bool prim[size];
	
	// Alle Elemente des Arrays werden auf "true" gesetzt
	for (int i=0; i < size; i++)
	{
		prim[i] = true;
	}
	
	// Das erste Element wird auf "false" geÀndert
	prim[0] = false;


	// Sieben
	for (int i=1; i < size; i++)
	{	
		if (prim[i] == true)
		{
			for (int j = 2; j < size; j++)
			{
				calc = (i+1)*j;
				if (calc > size)
					break;
				prim[calc-1] = false;
			}
		}
	}


	// Ausgabe
	for (int k=0; k < size; k++)
	{
		if (prim[k] == true)
		{
			printf("%d \n",k+1);
		}
	}
	return 0;
}




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025