TheMaister Skrevet 29. mars 2008 Del Skrevet 29. mars 2008 Hei Veldig fersk på C++, men prøvde å lage et program som finne alle primtallene fra 0 til x, og printer ut dette til en tekstfil. Funker fint sånn sett, men lurer på hvordan jeg kan regne på virkelig svære tall, som ikke double engang takler :\ #include <iostream> #include <fstream> #include <time.h> using namespace std; double getinput(){ int a; cout << "Find all prime numbers up to this number: "; do{cin >> a; if(a <= 3){cout << "Give positive integer larger than 3... \n\n";}}while(a <= 3); cout << endl; return a;} bool compute(double n){ double a; unsigned long int b,d,e; e = int(n)%2; if(e==0 && e != n){return(false);} for(float c=3;c<n;c+=2){ a = (n/c); b = int(a); if(b==a){return(false);}} return (true);} class time { public: double clockcount; }start,stop; int main() { ofstream file; file.open("c:\\prime.txt", ios::trunc); if(file.is_open()){ file << "2\n"; double n; bool prime; n = getinput(); start.clockcount = clock(); for(int a=3;a<n;a+=2){ prime = compute(a); cout << a << ": "; if (prime){ cout << "Prime!\n"; file << a << endl;} else cout << "Not prime.\n";}} stop.clockcount = clock(); cout << "\nIt took " << (stop.clockcount - start.clockcount)/CLOCKS_PER_SEC << " seconds.\n\n"; file << "\nIt took " << (stop.clockcount - start.clockcount)/CLOCKS_PER_SEC << " seconds.\n\n"; file.close(); system("PAUSE"); return EXIT_SUCCESS; } Lenke til kommentar
Legion Skrevet 29. mars 2008 Del Skrevet 29. mars 2008 søk på codeproject.com, du vil finne flere klasser der som håndterer store tall. evt lag din egen, basert f.eks på ei lenka liste. algoritmen din er forresten også en smule tung, du vil f.eks få kutta jobben i to dersom du kun sjekker på tall som er n/2, siden alle tall over vil vi resultat som er <2, men også dette blir tungt på store tall. søk på prime sieve, dette er de mest effektive primtallsalgoritmene Lenke til kommentar
Harkonnen Skrevet 3. april 2008 Del Skrevet 3. april 2008 Det holder at du sjekker alle tall opp til squareroot(n) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå