Nick: Primzahlsuche in C++ (optimierbar?)

Beitrag lesen

Hallo,
ich habe ein Programm zur Suche von Primzahlen in C++ geschrieben,
für die Suche in 1-10.000.000 braucht das Programm 26sek, bei 1-100.000.000
11min, bei 1-200.000.000 30min (und 45mb ramverbrauch). zwar finde ich das
programm shcon unglaublich schnell, allerdings möchte ich das weiter optimieren,
momentan mache ich einen test mit den zahlen von 1 bis 1 milliarde.
code:

#include<vector>  
#include<iostream>  
int main() {  
 std::vector<unsigned int> primes;  
 primes.push_back(2);primes.push_back(3);primes.push_back(5);  
 std::cout << "2\n3\n5\n";  
 unsigned int i = 7;  
 unsigned int j;  
 unsigned int lengthofprimesarray = 3;  
 bool isprime;  
 while(i < 1000000000) {  
  j = 1;  
  isprime = true;  
  while(j < lengthofprimesarray and !(primes.at(j)*primes.at(j) > i)) {  
   if(i%primes.at(j) == 0) {  
    isprime = false;  
    break;  
   }  
   j++;  
  }  
  if(isprime == true) {  
   primes.push_back(i);  
   lengthofprimesarray++;  
   std::cout << i << "\n";  
  }  
  if(i%10 == 3) {  
   i += 4;  
  } else {  
   i += 2;  
  }  
 }  
 return 0;  
}

geht das auch effektiver?
(btw. falls jemand den code unsauber findet: das war mein erstes brauchbares programm in c++...)

Nick