Java实现算法导论中求解模线性方程解(基于最大公约数欧几里得扩展算法)
生活随笔
收集整理的這篇文章主要介紹了
Java实现算法导论中求解模线性方程解(基于最大公约数欧几里得扩展算法)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基于最大公約數歐幾里得擴展算法求解算法導論中模線性方程解。具體要結合算法導論中的有關數論算法章節理解,具體代碼如下:
package cn.ansj;/*假設方程ax=b(mod n)有解,且x0是方程的任意一個解,則該方程對模n恰有d個不同的解(d=gcd(a,n)),分別為:xi=x0+i*(n/d) mod n 。*/ public class ModularLinearEquation {static int x,y;public static int extend_gcd(int a, int b){if (b == 0){x = 1;y = 0;return a;}int re = extend_gcd(b, a % b);int tmp = x;x = y;y = tmp - a / b * y;return re;}public static void main(String args[]) { int a=777;int b=66;int n=6;int d=extend_gcd(a,n);System.out.println("最大公約數d="+d+" And x="+x+" And y="+y);if(b%d!=0) System.out.println("no solution");else{int x0=x*(b/d)%n;System.out.println("x0="+x0);for(int i=1;i<d;i++)System.out.println("solution:"+(x0+i*(n/d))%n);} } }執行結果: 最大公約數d=3 And x=1 And y=-129 x0=4 solution:0 solution:2
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的Java实现算法导论中求解模线性方程解(基于最大公约数欧几里得扩展算法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java实现算法导论中最大公约数欧几里得
- 下一篇: Java实现算法导论中反复平方法模取幂