
math.h und windows.h sind dort bei den includes, da ich diese für eine ergänzung, die später folgen wird, benötige

Edit:
Die mathematische Begründung für das mit der Wurzel ist übrigens bei diesem Beispiel zu erkennen:
loop = 25;
wurzel von loop = 5
loop / wurzel von loop + 1 = 0,...
wenn mal die wurzel von loop mit 1 addiert und loop durch das dann teilt, kommt immer eine zahl á la 0,... raus

Nohcmal Edit:
Code: Alles auswählen
// Test.cpp
#include <iostream>
#include <windows.h>
#include <time.h>
#include <math.h>
#include <fstream>
using namespace std;
int main() {
double loop;
double i;
double max;
boolean prim;
ofstream f("C:\\prim.txt", ios::app);
cout << "Geben Sie die Zahl ein, bis zu der gezaehlt werden soll:" << endl;
cin >> max;
cout << "==================================================" << endl;
f << "Primzahlen" << endl;
for(loop = 1;loop <= max;++loop) {
prim = true;
for(i = 2;i < sqrt(loop);++i) {
if(loop / i == ceil(loop / i)) {
prim = false;
}
}
if(prim == true) {
cout << loop << endl;
f << loop << endl;
}
}
}
ich habe auch schon versucht, die datei so zu beschreiben:
Code: Alles auswählen
fstream f;
...
f.open("C:\\prim.txt",ios::app));
f << loop << endl;
f.close();

Edit3: Übrigens: Wenn ich sage, dass i mit 3 initialisiert wird und dann jede immer i = i + 2 bei jedem durchgang der for-schleife gerechnet wird, kommt es dazu, dass es auch teilweise gerade zahlen als primzahlen gibt. deshalb muss ich bei 2 initalisieren und immer ++i rechnen...
Edit 4:
Die effizienteste Lösung wäre vermutlich sowieso, wenn man alle bereits rausgefundenen primzahlen in ein array schreibt und einfach bei einer neuen zahl prüft, ob diese zahl ein vielfaches einer primzahl ist. wenn nicht, ist die zahl ebenfalls eine primzahl.
