Hallo, ich habe ein Problem, bei dem ich nicht so recht weiter weiß. Zunächst mal die betroffenen Teile meines Codes:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48:
| public poly sqm(int a, int p, poly f) { poly r = new poly(1); poly G = new poly(deg,coef); if(a%2==1) { r=G; a=a-1; } a=a/2; while(a>0) { G=G.multiply(G,p); G=G.mod(f,p); G.print(); if(a%2==1) { G.print(); r=G.multiply(r,p); r.print(); r=r.mod(f,p); a=a-1; } a=a/2; } return r; }
public poly multiply(poly b, int p) { int[] co =new int[deg+b.deg +1]; for(int i=0; i<=deg+b.deg; i++) { co[i]=0; for(int j=0; j<=i; j++) { if(i-j<=deg&&j<=b.deg) { co[i]+=coef[i-j]*b.coef[j]; } } } poly r=new poly(co); r.convert(p); return r; } |
Main-Funktion:
C#-Quelltext
1: 2: 3: 4:
| int[] c = {0,1}; poly P = new poly(1,c); poly u = new poly(1,c); u=u.sqm(5,5,P); |
Nun bekomme ich beim Ausführen des Programms den Fehler System.Overflow bei der Methode multiply. Wobei der Algorithmus planmäßig verläuft bis zu der von mir kommentierten Stelle (in sqm).
Seltsam ist auch, dass wenn ich die multiply - Methode an der Stelle (also mit den selben Parametern) wo der fehler zu liegen scheint, direkt aufrufe funktioniert alles reibungslos ...
Wie gesagt das sind jetzt nur Ausschnitte des Codes, ich dachte mir es wäre nicht sinnvoll hier 300 zeilen zu posten. Verzeiht mir bitte auch meinen holprigen Programmierstil - das ist mein erstes C# Programm (und eines meiner ersten überhaupt).
Ich hoffe es kann mir jemand weiterhelfen.
lg Felix
Moderiert von
Kha: C#-Tags hinzugefügt
Danke für das editieren. Habe den Fehler nun aber gefunden, der multily algorithm funktioniert in der weide nicht wenn man das nullpolynom mit dem nullpolynom multipliziert ...
lg