Subtrees hinzugefügt
This commit is contained in:
parent
bf2cd02475
commit
cfa0ec9c0d
27 changed files with 965 additions and 0 deletions
6
Software/IuD_Schnelle_Potenzierung_BJ/schnelle-potenzierung-ROHVERSION/.gitignore
vendored
Normal file
6
Software/IuD_Schnelle_Potenzierung_BJ/schnelle-potenzierung-ROHVERSION/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
*.sh
|
||||
*.class
|
||||
*.ctxt
|
||||
repo.adoc
|
||||
repo_subtree.adoc
|
||||
/alt
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
// Filtered on Sonntag 2022-März-13 at 23:15:22 by Tippfilter 0.4-4-g83a7d89 (development build)
|
||||
|
||||
/** Diese Klasse enthält eine Methode zur schnellen modularen Potenzierung,
|
||||
* die bei RSA und anderen modernen Kryptoverfahren zum Einsatz kommt.
|
||||
*
|
||||
* Sie ist als Programmierübung für Oberstufenschüler gedacht. Dabei stehen
|
||||
* die rekursive Implementierung und die modulo-Operation im Vordergrund.
|
||||
*
|
||||
* @author Urs Lautebach
|
||||
* @author Tobias Nopper
|
||||
* @version 2021-03-24
|
||||
* Dieses Projekt steht unter der Lizenz CC BY-NC-SA 4.0
|
||||
* This project is licensed under CC BY-NC-SA 4.0
|
||||
* (https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode) */
|
||||
public class SchnellePotenzierung {
|
||||
|
||||
/** Berechnet die modulare Potenz a^b mod m.
|
||||
* Der Modulo der Rest bei der Division; 16:6 = 2 Rest 4, also ist
|
||||
* 16 mod 6 = 4.
|
||||
* Java hat dafür den Operator "%"; "16%6" liefert also 4.
|
||||
* @param a Basis der Potenzierung
|
||||
* @param b Exponent der Potenzierung
|
||||
* @param m Modul der Restklasse, in der gerechnet wird
|
||||
* @return Das Ergebnis der Rechnung a^b mod m. */
|
||||
public static int modPotenz(int a, int b, int m) {
|
||||
return -12345; // TODO
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
// Filtered on Sonntag 2022-März-13 at 23:15:22 by Tippfilter 0.4-4-g83a7d89 (development build)
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
/** Die Test-Klasse SchnellePotenzierungTest enthält Tests für die gleichnamige
|
||||
* Klasse mit Programmierübungen.
|
||||
*
|
||||
* @author Urs Lautebach
|
||||
* @version 2021-04 */
|
||||
public class SchnellePotenzierungTest {
|
||||
/** Konstruktor fuer die Test-Klasse SchnellePotenzierungTest */
|
||||
public SchnellePotenzierungTest() { }
|
||||
|
||||
/** Wird vor jeder Testfall-Methode aufgerufen. */
|
||||
@Before
|
||||
public void setUp() { }
|
||||
|
||||
/** Wird nach jeder Testfall-Methode aufgerufen. */
|
||||
@After
|
||||
public void tearDown() { }
|
||||
|
||||
@Test
|
||||
public void testEinfacheFaelle() {
|
||||
assertEquals(1, SchnellePotenzierung.modPotenz(1, 0, 5));
|
||||
assertEquals(1, SchnellePotenzierung.modPotenz(2, 0, 5));
|
||||
assertEquals(1, SchnellePotenzierung.modPotenz(3, 0, 5));
|
||||
|
||||
assertEquals(1, SchnellePotenzierung.modPotenz(2, 0, 5));
|
||||
assertEquals(1, SchnellePotenzierung.modPotenz(88, 0, 15));
|
||||
assertEquals(1, SchnellePotenzierung.modPotenz(75345, 0, 15));
|
||||
|
||||
assertEquals(1, SchnellePotenzierung.modPotenz(1, 1, 5));
|
||||
assertEquals(2, SchnellePotenzierung.modPotenz(2, 1, 5));
|
||||
assertEquals(3, SchnellePotenzierung.modPotenz(3, 1, 5));
|
||||
|
||||
assertEquals(17, SchnellePotenzierung.modPotenz(17, 1, 44));
|
||||
assertEquals(17, SchnellePotenzierung.modPotenz(17, 1, 45));
|
||||
assertEquals(7, SchnellePotenzierung.modPotenz(7, 1, 44));
|
||||
assertEquals(7, SchnellePotenzierung.modPotenz(7, 1, 45));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSoMittel() {
|
||||
assertEquals(49, SchnellePotenzierung.modPotenz(7, 2, 100));
|
||||
assertEquals(69, SchnellePotenzierung.modPotenz(13, 2, 100));
|
||||
assertEquals(81, SchnellePotenzierung.modPotenz(9, 2, 152));
|
||||
assertEquals(81, SchnellePotenzierung.modPotenz(3, 4, 1000));
|
||||
assertEquals(24, SchnellePotenzierung.modPotenz(2, 10, 1000));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGrosseZahlen() {
|
||||
assertEquals(80, SchnellePotenzierung.modPotenz(37, 513, 101));
|
||||
assertEquals(129, SchnellePotenzierung.modPotenz(376, 53, 1001));
|
||||
assertEquals(5192, SchnellePotenzierung.modPotenz(376, 5173, 12344));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
#BlueJ package file
|
||||
dependency1.from=SchnellePotenzierungTest
|
||||
dependency1.to=SchnellePotenzierung
|
||||
dependency1.type=UsesDependency
|
||||
editor.fx.0.height=1013
|
||||
editor.fx.0.width=1034
|
||||
editor.fx.0.x=2009
|
||||
editor.fx.0.y=31
|
||||
objectbench.height=95
|
||||
objectbench.width=770
|
||||
package.divider.horizontal=0.6
|
||||
package.divider.vertical=0.7992125984251969
|
||||
package.editor.height=399
|
||||
package.editor.width=643
|
||||
package.editor.x=1735
|
||||
package.editor.y=68
|
||||
package.frame.height=600
|
||||
package.frame.width=800
|
||||
package.numDependencies=1
|
||||
package.numTargets=2
|
||||
package.showExtends=true
|
||||
package.showUses=true
|
||||
project.charset=UTF-8
|
||||
readme.height=60
|
||||
readme.name=@README
|
||||
readme.width=49
|
||||
readme.x=10
|
||||
readme.y=10
|
||||
target1.height=70
|
||||
target1.name=SchnellePotenzierungTest
|
||||
target1.showInterface=false
|
||||
target1.type=UnitTestTargetJunit4
|
||||
target1.width=220
|
||||
target1.x=120
|
||||
target1.y=70
|
||||
target2.height=70
|
||||
target2.name=SchnellePotenzierung
|
||||
target2.showInterface=false
|
||||
target2.type=ClassTarget
|
||||
target2.width=190
|
||||
target2.x=10
|
||||
target2.y=160
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
This folder was generated on 2022-03-13 23:15:22
|
||||
by Tippfilter version: 0.4-4-g83a7d89 (development build), built Donnerstag 2022-02-24 at 15:07:14)
|
||||
|
||||
using the following configuration:
|
||||
|
||||
original folder: /home/urs/Schreibtisch/kr-skript/schnelle-potenzierung
|
||||
destination folder: /home/urs/Schreibtisch/kr-skript/sschnelle-postenzierung-ROHVERSION
|
||||
overwrite destination folder: true
|
||||
config files (order parsed): /home/urs/Schreibtisch/kr-skript/schnelle-potenzierung/bluej.tippfilter
|
||||
filtered patterns: [file://*.java]
|
||||
ignored patterns: [dir://.git, file://.gitignore, file://*.tippfilter, dir://doc, file://*.ctxt, dir://bin, file://*.class]
|
||||
requested sections: {file://package.bluej=UNKNOWN}
|
||||
global default audience: RAW
|
||||
all sections requested: true
|
||||
audience for ALL sections: RAW
|
||||
write log file: true
|
||||
write filter date: true
|
||||
|
||||
and the sections: written for audience:
|
||||
|
||||
1 dir:/ | RAW |
|
||||
2 file:/SchnellePotenzierung.java | RAW |
|
||||
3 file:/package.bluej | RAW |
|
||||
4 file:/SchnellePotenzierungTest.java | RAW |
|
||||
Loading…
Add table
Add a link
Reference in a new issue