測試環境為linux下,假設在預設路徑下(/usr/local)裝好了ntl,則編寫好相應的test.cpp檔案後執行:g++ -g -o2 test.cpp -o test -lntl -lgmp -lm
(1)使用大整數類 zz :
例1: 計算c=
(a+1
)∗(b
+1) c=(
a+1)
∗(b+
1)
#include
using
namespace
std;
using
namespace ntl;
int main()
例2:從標準輸入中讀取乙個整數列表,計算他們的平方和
(測試中迴圈結束的條件是輸入不滿足要求的字元(非整數)或者按』ctrl』+』d』)
#include
using
namespace
std;
using
namespace ntl;
int main()
例3: 模冪運算 (a^e mod n)
注:對於ntl中的每乙個函式,有乙個 procedural version,它將結果儲存在第乙個引數中,這樣不會建立任何臨時物件。
zz powermod(const zz& a, const zz& e, const zz& n)
if (e < 0)
return invmod(res,n);
else
return res;
}
例4:以下程式提示使用者輸入,並應用簡單的概率素性測試。在ntl中已經提供了乙個稍複雜的素性測試!
注:使用miller-rabin素數測試。
#include
using
namespace
std;
using
namespace ntl;
long witness(const zz& n, const zz& x) //n為素數候選者,x為隨機數
/*計算m,k的**可以改寫為:
k = 1;
m = n >> 1;
while (!isodd(m))
*//*或者改寫為:
k = 1;
while (bit(n, k) == 0) k++;
m = n >> k;
*//*在ntl內建的函式中,有乙個剛好滿足我們的要求:
參考資料:
SVN使用教程1
版本控制是管理的藝術變化資訊。這對程式設計師一直是重要的工具,他們通常會花時間做小改變軟體然後取消或第二天檢查其中的一些變化。想象乙個團隊的開發人員併發 甚至同時在同一檔案 你可以看到為什麼乙個好的系統需要管理潛在的混亂。1。tortoisesvn是什麼?tortoisesvn是乙個免費開源的apa...
Numpy 使用教程 1
如果你使用 python 語言進行科學計算,那麼一定會接觸到 numpy。numpy 是支援 python 語言的數值計算擴充庫,其擁有強大的多維陣列處理與矩陣運算能力。除此之外,numpy 還內建了大量的函式,方便你快速構建數學模型。本課程難度為一般,屬於初級級別課程,適合具有 python 基礎...
Cython使用教程 1
記錄一下自己使用cython的過程和經驗.環境 首先介紹windows系統下的安裝.cython通過編譯python檔案來實現加速,因此需要安裝編譯器,我使用的是mingw.安裝mingw後,安裝相關庫 conda install libpython m2w64 toolchain c msys2 ...