modulo-gleichung lösen
-
Hallo
zum lösen der Gleichung a^n mod n^2=b habe ich folgendes Programm in eine fun.h-Datei geschreiben:
#include<iostream>
#include<cmath>
using namespace std;int ngz(double b) // nächstgrößere ganze Zahl
{
while(i<b)
{i++;}
return i;
}
int pot(int w,int i) //w hoch i
{
int erg=1;
int k;
for(k=1;k<=i;k++)
{
erg=ergw;
}
return erg;
}
int rest(double p,double q) // Modulo
{return p-(ngz(p/q)-1)q;}
int solve(int b, double r)
{
timer_t t;
double x=sqrt(r+1);
int i=ngz(x),e=1;
int u=pot(b,i);
int v=ii;
while(e==1)
{
if(rest(u,v)==r)
{
e=2;
t.stop();
break;
} else
{
i=i++;
u=ub;
v+=2*(i-1)+1;
}
}
cout<< " Loesung n=" << i <<" Zeit=" << t.get_seconds() <<"\n";
return i;
}
in main.cpp steht folgendes:
#include<iostream>
#include<cmath>
#include"timer.h"
#include "fun.h"
using namespace std;
void main()
{
system("cls");
cout<<"Dieses programm loest die Gleichung a^n mod n^2=r\n";
int a,r;
cout<< "a eingeben\n";
cin>> a;
cout<< "r eingeben\n";
cin>> r;
int z=solve(a,r);
cout<< rest(pot(a,z),z*z)<<"\n" ;
system("pause");
}Die Funktionen ngz und Rest gibt es schon aber die parameterhaben haben andere
daten typen. Weil ich für a und b nur ganze Zahlen brauche habe ich die neu geschreiben. Zum anderen gab es mit den vorhandenen Funktionen Ärger mit den Datentypen. Im Desktop liegt zudem die Datei gleichung.exe-datei.
Das Programm liefert auch Lösungen aber im einzelschrittdebugen offnet sich eine neue Registerkarte "Es sit keine quelle verfügbar"
mit den InformationenAufruflsitenort:
gleichung.exe!_ftol2_sse() Zeile 41Quelleninformationen:
Quelle für "f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\tran\i386\ftol2.asm" wird gesucht. Checksum: MD5 {d2 9 56 79 46 51 f8 66 61 ea f3 2d f7 42 53 76}
Die Datei "f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\tran\i386\ftol2.asm" ist nicht vorhanden.
"f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\tran\i386\ftol2.asm" wird in Skriptdokumenten gesucht...
"f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\tran\i386\ftol2.asm" wird in Projekten gesucht.
Die Datei wurde nicht in einem Projekt gefunden.
In Verzeichnis "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\vc7\atlmfc" wird gesucht...
In Verzeichnis "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\vc7\crt" wird gesucht...
In Verzeichnis "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\mfc" wird gesucht...
In Verzeichnis "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\mfcm" wird gesucht...
In Verzeichnis "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\atl" wird gesucht...
In Verzeichnis "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\crt\src" wird gesucht...
In Verzeichnis "" wird gesucht...
In Verzeichnis "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include" wird gesucht...
In Verzeichnis "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include" wird gesucht...
In Verzeichnis "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include" wird gesucht...
In Verzeichnis "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\\include" wird gesucht...
In Verzeichnis "" wird gesucht...
In den Einstellungen zum Debuggen von Quelldateien für die aktive Lösung ist angegeben, dass der Benutzer nicht zum Suchen der Datei aufgefordert wird: f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\tran\i386\ftol2.asm.
Die Quelldatei "f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\tran\i386\ftol2.asm" wurde nicht gefunden.Was bedeutet diese Fehlermeldung? Das Programm findet auch nur Lösungen für gerade a und b=0.
-
Als erstes gehört der Code in fun.cpp und nicht in fun.h
Dann fehlt die Deklaration von i
int ngz(double b) // nächstgrößere ganze Zahl { while(i<b) {i++;} return i; }
Auch mit
timer_t t; t.stop(); t.get_seconds()
kann mein Compiler nix anfangen.
Das steht möglicherweise in "timer.h", die es aber nicht gibt.