⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.c

📁 密码学大整数运算的库函数
💻 C
字号:
#include <ltmpp.H>const unsigned char data[] = { 0xFF, 0xFF };int main(void){   mpint a, b, c, d("23"), e(data, 2);   unsigned char *buf;   int n, x;   a.readDec("1024");   b.readDec("512");   c = a + b;   cout << a.toStr(10) << endl;   cout << b.toStr(10) << endl;   cout << c.toStr(10) << endl;   cout << d.toStr(10) << endl;   cout << e.toStr(10) << endl;   cout << endl << endl;   c += -1;   cout << c.toStr(10) << endl;   --c;   cout << c.toStr(10) << endl;   cout << endl << endl;   n = c.toBinSize();   cout << "C size in bytes is " << n << endl;   buf = c.toBin();   for (x = 0; x < n; x++) printf("%02x ", buf[x]);   printf("\n");   cout << endl << endl;   a.readDec("10");   b.readDec("0");   while (a != b) { cout << a.toStr(10) << endl; --a; }// mm/ error   d = mpint(0);   try {       a /= d;   } catch (ltmpp_error err) { cout << "Error == " << err.getTypeStr() << endl << "(an error was expected)" << endl; }   // a = 2^64 quickly    a = mpint(1) << 64;   cout << a.toStr(10) << endl;   while (a > 0) {      cout << "a == " << a.toDec() << endl;      a = (a + 1) / 3;   }++a;a++;   // factor with pollard-rho    c = (mpint(1) << 64) - 1;   a = 1;      b = 1;   while (c > 1) {      a = (a * a + 1) % c;      b = (b * b + 1) % c;      b = (b * b + 1) % c;      d = (a - b) % c;      d = c.gcd(d);      if (d != 1 && d != c) {         c /= d;         cout << "Factor: " << d.toDec() << " prime: " << d.isPrime() << " (left: " << c.toDec() << ")" << endl;         a = 1;         b = 1;         if (c.isPrime()) {            cout << "Factor: " << c.toDec() << " and we're done." << endl;            c = 1;         }      }   }       return 0;}/* $Source: /cvs/libtom/ltmpp/test.C,v $ *//* $Revision: 1.10 $ *//* $Date: 2006/08/03 15:10:07 $ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -