unbekannter Fehler
-
Hall, das Programm läuft...
#include <string.h> #include <iostream> using namespace std; #include <sstream> #include <string> #include <vector> #include <cstdio> #include <math.h> int zeler; int drz1=0; // akle zahl int drz2=0; // neue Zahl int Lenge; int input; int main(int argc, const char * argv[]) { vector<int>npzzeler; vector<int>pzzeler; vector<int>zahlensammler; for (zeler=1; zeler<=20; zeler++)// Dreieckszahlhersteller { drz1=drz1+zeler; drz2=zeler+drz1; for(input=drz1; input<drz2; input++) { if (input%2==!0) zahlensammler.push_back(input); //cout<< input<< " input\n"; } std::cout <<zeler<<". indrzaliges.Interv.von "<<drz1+1<<" - "<<drz2<<" hat "<<zeler/2<<" uZ \n"; for(auto it = zahlensammler.begin(); it != zahlensammler.end();it++) // Ausdruck { // cout<<""<< *it <<" "; int x=*it; int y=0; int Pruefung=0; for(y=3; y<sqrt(x); y++) { if(x%y==0) { Pruefung=1; //cout<<Pruefung<<"=Pr "<<y<<"-y "<<x%y<<"mod"<<endl; } } if(Pruefung==!1) { pzzeler.push_back(*it); //cout <<x<< " Primzahl!" << endl; } else { npzzeler.push_back(*it); // cout <<x<<" keine PZ!" << endl; } //cout<<"Ende"<<endl; } cout<<pzzeler.size()<<" PZ: "; for(auto it = pzzeler.begin(); it != pzzeler.end();it++) // Ausdruck { cout<<""<< *it <<" "; } cout<<"\n"<<npzzeler.size()<<" uNPZ: "; for(auto it = npzzeler.begin(); it != npzzeler.end();it++) // Ausdruck { cout<<""<< *it <<" "; } cout<<"\n"; npzzeler.clear(); pzzeler.clear(); zahlensammler.clear(); } return 0; }
Frage, warum stimmen die Ergebnisse erst in höheren Bereichen, aber z. B.
3. indrzaliges.Interv.von 7 - 9 hat 1 uZ
1 PZ: 7
0 uNPZ:hier nicht. Es sind eindeutig 1 ungerade NichtPrimzahlen im Bereich, sowie 2 ungerade Zahlen insgesamt.
Was muß ich tun?
-
Also, ich bin, das Programm sucht die Interdreieckszahligen Bereiche auf, und durchsucht diese, indem er die PZ zählt und die ungeraden NichtPrimZahlen ...