Modular inverse: Difference between revisions
Content added Content deleted
(→{{header|Minimal BASIC}}: Added) |
Not a robot (talk | contribs) (Add Comal) |
||
Line 677: | Line 677: | ||
-486, 217 -> 121 |
-486, 217 -> 121 |
||
40, 2018 -> no modular inverse</pre> |
40, 2018 -> no modular inverse</pre> |
||
=={{header|Comal}}== |
|||
<lang comal>0010 FUNC mulinv#(a#,b#) CLOSED |
|||
0020 IF b#<0 THEN b#:=-b# |
|||
0030 IF a#<0 THEN a#:=b#-(-a# MOD b#) |
|||
0040 t#:=0;nt#:=1;r#:=b#;nr#:=a# MOD b# |
|||
0050 WHILE nr#<>0 DO |
|||
0060 q#:=r# DIV nr# |
|||
0070 tmp#:=nt#;nt#:=t#-q#*nt#;t#:=tmp# |
|||
0080 tmp#:=nr#;nr#:=r#-q#*nr#;r#:=tmp# |
|||
0090 ENDWHILE |
|||
0100 IF r#>1 THEN RETURN -1 |
|||
0110 IF t#<0 THEN t#:+b# |
|||
0120 RETURN t# |
|||
0130 ENDFUNC mulinv# |
|||
0140 // |
|||
0150 WHILE NOT EOD DO |
|||
0160 READ a#,b# |
|||
0170 PRINT a#,", ",b#," -> ",mulinv#(a#,b#) |
|||
0180 ENDWHILE |
|||
0190 END |
|||
0200 // |
|||
0210 DATA 42,2017,40,1,52,-217,-486,217,40,2018</lang> |
|||
{{out}} |
|||
<pre>42, 2017 -> 1969 |
|||
40, 1 -> 0 |
|||
52, -217 -> 96 |
|||
-486, 217 -> 121 |
|||
40, 2018 -> -1</pre> |
|||
=={{header|Common Lisp}}== |
=={{header|Common Lisp}}== |