Primzahlenprogramm (Verschnellerung)

moin


Da kann ich dir nur empfehlen, wenn du selber interesse an programmieren hast, dich selber hinzusetzen und zu lernen.


mfg
umbrasaxum
 
naja unter der Woche komme ich immer um 18:00 nachhause und muss noch selber lernen und Aufgabe machen

Aber in den Ferien lerne ich dann eh was das Zeug hält^^
 
In deinem Originalcode könntest du die Wurzelberechnung aus der Schleife rausnehmen. Der Wert ändert sich für dasselbe W nicht, wird aber bei jedem Schleifendurchgang von x neu berechnet.
 
moin


Er meint es so:
Code:
int w,x,y,z,a, wurzel;
	long zeit1,zeit2,zeit;

	time(&zeit1);
	for(w=3;w<10000000;w++)
	{
		y=0;
		
                wurzel = sqrt(w)+1;
		for(x=2;x<wurzel;x++)
		{
			z=w%x;
			
			if(z==0)
			{
				y++;
				break;
			}
		}
		
			if(y==0)
			{
				cout<<<"\n";
			}	   
	}	
	time(&zeit2);
	zeit= zeit2 - zeit1;
	cout<
	getch();

So wird die Wurzel nur neu berechnet wenn es nötig ist.


mfg
umbrasaxum
 
Hy!

Endurion hat gemeint das du statt
Code:
for(x=2;x<(sqrt(w)+1);x++)

int iSqrt = sqrt(w);
for( x = 2; x < iSqrt; x++)
schreiben könntest...denke ich mal

mfg
uhu01
 
moin


Das mit dem sqrt wo anders hinpacken hat bei mir keinen deutlichen Geschwindigkeits zuwachs gebracht.
Was mir aber noch eingefallen ist, ist das Ausgaben auf dem Bildschirm sehr viel Zeit kosten. Lass mal das cout<<"\n", weg, das hat bei mir einen erheblichen Geschwindigkeitszuwachs gebracht.


mfg
umbrasaxum
 
ich weiß das macht dann ca 1/3 der Zeit nur dann hab ich auch keine Ergebnisse mehr^^ Und bei mir bringt das woanders hinpacken imerhin 12 sec inetwa
 
moin


Wie dann hast du keine Ergebnisse mehr?
Speicher die Ergebnis lieber erst in einer Liste und zeige alle Ergebnisse am Ende an.


mfg
umbrasaxum
 
Zurück