具體的運算演算法
加法:
//直接異或運算就ok了
乘法:
unsigned
char gfmul(unsigned
char a, unsigned
char b)
b >>= 1;
}return result;
}
分析一下乘法原理:
總共要迴圈8次,每一次迴圈都需要判斷b的最低位是否為1,a的最高位是否為1。如果b的最低位為1,那麼就結果result就要與a進行異或運算。再判斷a最高位是否為1,如果是的話那麼a在左移之後還要異或 1b。大概差不多了吧。
乘法逆元:
//生成逆元表函式
void set_inverse()
}//查表函式
unsigned
char inverse(unsigned
char b)
else }}
}
乘法逆元原理:
在gf(2^8)這個群裡如果有g^x * g^y == 1(g是其中乙個生成元)那麼就會有x+y == 255。回到函式裡面,第乙個我利用生成元:3做254次乘法(第乙個元素是0第二個元素是3)得到了乙個以3為生成元重新排列的群。第二個就是查表函式了。暴力搜尋出b所在的位置,然後255-b所在的位置的元素就是b的逆元。
離散對數:
void set_genrator()
gen.close();
}int genrator(unsigned
char a, unsigned
char b)
}}
離散對數原理:
這裡需要使用者輸入乙個「生成元」和乙個x,首先要保證使用者輸入的生成元是乙個真實的生成元。所以需要加乙個判斷。之後就是利用生成元做多次乘法做到值為x為止,迴圈次數就是離散對數了。
最後:僅是學生黨隨意寫的用於交流學習,不喜勿噴,謝謝駐足的各位
演算法導論28(矩陣運算)
28.1 求解線性方程組ax b,p a lu lux pb ly p b,ux y 28.2 矩陣求逆ax e a xi e iaxi ei,pa l u ly i pe i,ux i yi 28.3 對稱正定矩陣和最小二乘逼近 推論28.6 乙個對稱正定矩陣的lu 分解永遠不會出現除數為0的情形...
2 8 運算子優先順序
2.8 運算子優先順序 下圖是每種運算子的優先順序,按照運算先後順序排序 優先順序相同的情況下,按照從左到右的順序依次運算 優先順序 描述 運算子 1 括號2 正負號3 自增自減,非 4 乘除,取餘 5 加減6 移位運算 7 大小關係 8 相等關係 9 按位與10 按位異或 11 按位或12 邏輯與...
2 8 自增和自減運算子
2.8 自增和自減運算子 1 if c n nl 注意 1 這種運算子可以放在變數a的前面或者後面,針對變數a效果都是一樣的,將a的值加1.include stdio.h main inta 065 printf d n a 先把a的值減1,然後再使用,輸出 先執行了a a 1,又執行了a輸出 ge...