# grosse Zahlen benötigt



## akrecords (14. Dezember 2005)

Hi, ich habe von mein Prof hat bis nächsten Mittwoch die Aufgabe gegeben ein Programm zu schreiben das eine eingegebene Primzahl auf eine Mersenne Primzahl zu testen wovon es bisher ja nur 42 gibt und diese alle etwas größer als ein normaler integer sind  hab den code bisher also nur für integer zahlen geschrieben was dann allerdings nur bei den ersten sehr kleinen Mersenne Zahlen richtig funktioniert. Jetzt ist meine Frage ob es irgendwo schon einen vorgefertigten Code oder eine Class gibt die ich implementieren könnte so das das Einlesen und auch Berechnen mit grossen Zahlen möglich ist.

Danke schon mal im vorraus an alle die sich die Zeit nehmen über mein Problem nachzudenken! 


hier das Programm:

```
#include <iostream>

using namespace std;

int pn;

int exponent(int ex)
{
    int tmp = 2;
    for(int i=1; i<ex; i++) tmp = tmp*2;
    tmp = tmp-1;
    return(tmp);
}

bool IS_PRIME(int p)
{
    int m = exponent(p);
    int s = 4;
    int mod;
    for(int i = 0; i < (p-2); i++)
    {
        mod = ((s*s)-2) % m;
        if (mod == 0) return(true);
        s = mod;
    }
    return(false);
}

int main()
{
    cout<<"Please type in a prime number:  ";
    cin>>pn;
    if (IS_PRIME(pn) == true) cout<<"\n Your number is a Mersenne prime number";
        else cout<<"\n Your number is a normal prime number";
    cout<<"\n\n";
    system("pause");
    return(0);
}
```


----------



## Tobias K. (14. Dezember 2005)

moin


Ein long long ist auch ziemlich groß, aber wenn du wirklich lange Zahlen haben willst, wie Mersenne Primzahlen, dann such mal nach der Klasse "BigInt" z.B. da -> http://www.physik.uni-muenchen.de/kurs/Computing/ckurs/node34.html


mfg
umbrasaxum


----------



## akrecords (14. Dezember 2005)

hey danke für die super schnelle antwort, ich werde die bigint mal inplementieren und sehen wie es läuft  vielen dank nochmal


----------



## Thomas Kuse (15. Dezember 2005)

Large Number Class

http://lnc.sourceforge.net


----------



## akrecords (20. Dezember 2005)

Hi also ich hab jetzt mal die large.h von sourceforge verwendet aber jetzt habe ich das problem das ich unzählige linker errors bekomme aber ich weiss nicht wie ich die wegbekommen soll. mein prog und die large.h müssten in ordnung sein. ich benutze Dev-C++ zum programmieren.

hier noch mal der code:

```
#include <iostream>
#include "large.h"

using namespace std;

large pn;

large exponent(large ex)
{
    large tmp = 2;
    for(large i=1; i<ex; i++) tmp = tmp*2;
    tmp = tmp-1;
    return(tmp);
}

bool IS_PRIME(large p)
{
    large m = exponent(p);
    large s = 4;
    large mod,modtmp;
    for(large i = 0; i < (p-2); i++)
    {
        modtmp = ((s*s)-2)/m;
        mod = ((s*s)-2)-(m*modtmp);
        if (mod == 0) return(true);
        s = mod;
    }
    return(false);
}

int main()
{
    cout<<"Please type in a prime number:  ";
    cin>>pn;
    if (IS_PRIME(pn) == true) cout<<"\n Your number is a Mersenne prime number";
        else cout<<"\n Your number is a normal prime number";
    cout<<"\n\n";
    system("pause");
    return(0);
}
```

vielen dank noch mal im vorraus an alle die die mir helfen können oder es versuchen


----------



## deepthroat (21. Dezember 2005)

Hi.

Vielleicht hättest du einfach mal die README und INSTALL Dateien lesen sollen:


			
				INSTALL hat gesagt.:
			
		

> 4. Use LNC in a project
> 
> Right now, all you have to do is to add large.cpp to your sources
> and #include large.h whenever needed.


Es reicht eben nicht aus nur die Deklarationen der Header Datei in deinem Programm verfügbar zu machen, sondern die Definitionen müssen ja auch irgendwo (spätestens beim Linken) verfügbar sein.

Gruß


----------

