亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? zz.cpp

?? NTL is a high-performance, portable C++ library providing data structures and algorithms for manipul
?? CPP
?? 第 1 頁 / 共 3 頁
字號(hào):


#include <NTL/ZZ.h>
#include <NTL/vec_ZZ.h>


#include <NTL/new.h>



NTL_START_IMPL




const ZZ& ZZ::zero()
{
   static ZZ z;
   return z;
}


const ZZ& ZZ_expo(long e)
{
   static ZZ expo_helper;
   conv(expo_helper, e);
   return expo_helper;
}




void AddMod(ZZ& x, const ZZ& a, long b, const ZZ& n)
{
   static ZZ B;
   conv(B, b);
   AddMod(x, a, B, n);
}


void SubMod(ZZ& x, const ZZ& a, long b, const ZZ& n)
{
   static ZZ B;
   conv(B, b);
   SubMod(x, a, B, n);
}

void SubMod(ZZ& x, long a, const ZZ& b, const ZZ& n)
{
   static ZZ A;
   conv(A, a);
   SubMod(x, A, b, n);
}



// ****** input and output

static long iodigits = 0;
static long ioradix = 0;

// iodigits is the greatest integer such that 10^{iodigits} < NTL_WSP_BOUND
// ioradix = 10^{iodigits}

static void InitZZIO()
{
   long x;

   x = (NTL_WSP_BOUND-1)/10;
   iodigits = 0;
   ioradix = 1;

   while (x) {
      x = x / 10;
      iodigits++;
      ioradix = ioradix * 10;
   }

   if (iodigits <= 0) Error("problem with I/O");
}

istream& operator>>(istream& s, ZZ& x)
{
   long c;
   long cval;
   long sign;
   long ndigits;
   long acc;
   static ZZ a;

   if (!s) Error("bad ZZ input");

   if (!iodigits) InitZZIO();

   a = 0;

   SkipWhiteSpace(s);
   c = s.peek();

   if (c == '-') {
      sign = -1;
      s.get();
      c = s.peek();
   }
   else
      sign = 1;

   cval = CharToIntVal(c);

   if (cval < 0 || cval > 9) Error("bad ZZ input");

   ndigits = 0;
   acc = 0;
   while (cval >= 0 && cval <= 9) {
      acc = acc*10 + cval;
      ndigits++;

      if (ndigits == iodigits) {
         mul(a, a, ioradix);
         add(a, a, acc);
         ndigits = 0;
         acc = 0;
      }

      s.get();
      c = s.peek();
      cval = CharToIntVal(c);
   }

   if (ndigits != 0) {
      long mpy = 1;
      while (ndigits > 0) {
         mpy = mpy * 10;
         ndigits--;
      }

      mul(a, a, mpy);
      add(a, a, acc);
   }

   if (sign == -1)
      negate(a, a);

   x = a;

   return s;
}


// The class _ZZ_local_stack should be defined in an empty namespace,
// but since I don't want to rely on namespaces, we just give it a funny 
// name to avoid accidental name clashes.

struct _ZZ_local_stack {
   long top;
   long alloc;
   long *elts;

   _ZZ_local_stack() { top = -1; alloc = 0; elts = 0; }
   ~_ZZ_local_stack() { }

   long pop() { return elts[top--]; }
   long empty() { return (top == -1); }
   void push(long x);
};

void _ZZ_local_stack::push(long x)
{
   if (alloc == 0) {
      alloc = 100;
      elts = (long *) NTL_MALLOC(alloc, sizeof(long), 0);
   }

   top++;

   if (top + 1 > alloc) {
      alloc = 2*alloc;
      elts = (long *) NTL_REALLOC(elts, alloc, sizeof(long), 0);
   }

   if (!elts) {
      Error("out of space in ZZ output");
   }

   elts[top] = x;
}


static
void PrintDigits(ostream& s, long d, long justify)
{
   static char *buf = 0;

   if (!buf) {
      buf = (char *) NTL_MALLOC(iodigits, 1, 0);
      if (!buf) Error("out of memory");
   }

   long i = 0;

   while (d) {
      buf[i] = IntValToChar(d % 10);
      d = d / 10;
      i++;
   }

   if (justify) {
      long j = iodigits - i;
      while (j > 0) {
         s << "0";
         j--;
      }
   }

   while (i > 0) {
      i--;
      s << buf[i];
   }
}
      

   

ostream& operator<<(ostream& s, const ZZ& a)
{
   static ZZ b;
   static _ZZ_local_stack S;
   long r;
   long k;

   if (!iodigits) InitZZIO();

   b = a;

   k = sign(b);

   if (k == 0) {
      s << "0";
      return s;
   }

   if (k < 0) {
      s << "-";
      negate(b, b);
   }

   do {
      r = DivRem(b, b, ioradix);
      S.push(r);
   } while (!IsZero(b));

   r = S.pop();
   PrintDigits(s, r, 0);

   while (!S.empty()) {
      r = S.pop();
      PrintDigits(s, r, 1);
   }
      
   return s;
}



long GCD(long a, long b)
{
   long u, v, t, x;

   if (a < 0) {
      if (a < -NTL_MAX_LONG) Error("GCD: integer overflow");
      a = -a;
   }

   if (b < 0) {
      if (b < -NTL_MAX_LONG) Error("GCD: integer overflow");
      b = -b;
   }


   if (b==0)
      x = a;
   else {
      u = a;
      v = b;
      do {
         t = u % v;
         u = v; 
         v = t;
      } while (v != 0);

      x = u;
   }

   return x;
}

         

void XGCD(long& d, long& s, long& t, long a, long b)
{
   long  u, v, u0, v0, u1, v1, u2, v2, q, r;

   long aneg = 0, bneg = 0;

   if (a < 0) {
      if (a < -NTL_MAX_LONG) Error("XGCD: integer overflow");
      a = -a;
      aneg = 1;
   }

   if (b < 0) {
      if (b < -NTL_MAX_LONG) Error("XGCD: integer overflow");
      b = -b;
      bneg = 1;
   }

   u1=1; v1=0;
   u2=0; v2=1;
   u = a; v = b;

   while (v != 0) {
      q = u / v;
      r = u % v;
      u = v;
      v = r;
      u0 = u2;
      v0 = v2;
      u2 =  u1 - q*u2;
      v2 = v1- q*v2;
      u1 = u0;
      v1 = v0;
   }

   if (aneg)
      u1 = -u1;

   if (bneg)
      v1 = -v1;

   d = u;
   s = u1;
   t = v1;
}
   

long InvMod(long a, long n)
{
   long d, s, t;

   XGCD(d, s, t, a, n);
   if (d != 1) Error("InvMod: inverse undefined");
   if (s < 0)
      return s + n;
   else
      return s;
}


long PowerMod(long a, long ee, long n)
{
   long x, y;

   unsigned long e;

   if (ee < 0)
      e = - ((unsigned long) ee);
   else
      e = ee;

   x = 1;
   y = a;
   while (e) {
      if (e & 1) x = MulMod(x, y, n);
      y = MulMod(y, y, n);
      e = e >> 1;
   }

   if (ee < 0) x = InvMod(x, n);

   return x;
}

long ProbPrime(long n, long NumTests)
{
   long m, x, y, z;
   long i, j, k;

   if (n <= 1) return 0;


   if (n == 2) return 1;
   if (n % 2 == 0) return 0;

   if (n == 3) return 1;
   if (n % 3 == 0) return 0;

   if (n == 5) return 1;
   if (n % 5 == 0) return 0;

   if (n == 7) return 1;
   if (n % 7 == 0) return 0;

   if (n >= NTL_SP_BOUND) {
      return ProbPrime(to_ZZ(n), NumTests);
   }

   m = n - 1;
   k = 0;
   while((m & 1) == 0) {
      m = m >> 1;
      k++;
   }

   // n - 1 == 2^k * m, m odd

   for (i = 0; i < NumTests; i++) {
      do {
         x = RandomBnd(n);
      } while (x == 0);
      // x == 0 is not a useful candidtae for a witness!


      if (x == 0) continue;
      z = PowerMod(x, m, n);
      if (z == 1) continue;
   
      j = 0;
      do {
         y = z;
         z = MulMod(y, y, n);
         j++;
      } while (j != k && z != 1);

      if (z != 1 || y !=  n-1) return 0;
   }

   return 1;
}


long MillerWitness(const ZZ& n, const ZZ& x)
{
   ZZ m, y, z;
   long j, k;

   if (x == 0) return 0;

   add(m, n, -1);
   k = MakeOdd(m);
   // n - 1 == 2^k * m, m odd

   PowerMod(z, x, m, n);
   if (z == 1) return 0;

   j = 0;
   do {
      y = z;
      SqrMod(z, y, n);
      j++;
   } while (j != k && z != 1);

   if (z != 1) return 1;
   add(y, y, 1);
   if (y != n) return 1;
   return 0;
}


// ComputePrimeBound computes a reasonable bound for trial
// division in the Miller-Rabin test.
// It is computed a bit on the "low" side, since being a bit
// low doesn't hurt much, but being too high can hurt a lot.

static
long ComputePrimeBound(long bn)
{
   long wn = (bn+NTL_ZZ_NBITS-1)/NTL_ZZ_NBITS;

   long fn;

   if (wn <= 36)
      fn = wn/4 + 1;
   else
      fn = long(1.67*sqrt(double(wn)));

   long prime_bnd;

   if (NumBits(bn) + NumBits(fn) > NTL_SP_NBITS)
      prime_bnd = NTL_SP_BOUND;
   else
      prime_bnd = bn*fn;

   return prime_bnd;
}


long ProbPrime(const ZZ& n, long NumTrials)
{
   if (n <= 1) return 0;

   if (n.SinglePrecision()) {
      return ProbPrime(to_long(n), NumTrials);
   }


   long prime_bnd = ComputePrimeBound(NumBits(n));


   PrimeSeq s;
   long p;

   p = s.next();
   while (p && p < prime_bnd) {
      if (rem(n, p) == 0)
         return 0;

      p = s.next();
   }

   ZZ W;
   W = 2;

   // first try W == 2....the exponentiation
   // algorithm runs slightly faster in this case

   if (MillerWitness(n, W))
      return 0;


   long i;

   for (i = 0; i < NumTrials; i++) {
      do {
         RandomBnd(W, n);
      } while (W == 0);
      // W == 0 is not a useful candidate for a witness!

      if (MillerWitness(n, W)) 
         return 0;
   }

   return 1;
}


void RandomPrime(ZZ& n, long l, long NumTrials)
{
   if (l <= 1)
      Error("RandomPrime: l out of range");

   if (l == 2) {
      if (RandomBnd(2))
         n = 3;
      else
         n = 2;

      return;
   }

   do {
      RandomLen(n, l);
      if (!IsOdd(n)) add(n, n, 1);
   } while (!ProbPrime(n, NumTrials));
}

void NextPrime(ZZ& n, const ZZ& m, long NumTrials)
{
   ZZ x;

   if (m <= 2) {
      n = 2;
      return;
   }

   x = m;

   while (!ProbPrime(x, NumTrials))
      add(x, x, 1);

   n = x;
}

long NextPrime(long m, long NumTrials)
{
   long x;

   if (m <= 2) 
      return 2;

   x = m;

   while (x < NTL_SP_BOUND && !ProbPrime(x, NumTrials))
      x++;

   if (x >= NTL_SP_BOUND)
      Error("NextPrime: no more primes");

   return x;
}



long NextPowerOfTwo(long m)
{
   long k; 
   unsigned long n, um;

   if (m < 0) return 0;

   um = m;
   n = 1;
   k = 0;

   while (n < um) {
      n = n << 1;
      k++;
   }

   if (k >= NTL_BITS_PER_LONG-1)
      Error("NextPowerOfTwo: overflow");

   return k;
}



long NumBits(long a)
{
   unsigned long aa;
   if (a < 0) 
      aa = - ((unsigned long) a);
   else
      aa = a;

   long k = 0;
   while (aa) {
      k++;
      aa = aa >> 1;
   }

   return k;
}


long bit(long a, long k)
{
   unsigned long aa;
   if (a < 0)
      aa = - ((unsigned long) a);
   else
      aa = a;

   if (k < 0 || k >= NTL_BITS_PER_LONG) 
      return 0;
   else
      return long((aa >> k) & 1);
}



long divide(ZZ& q, const ZZ& a, const ZZ& b)
{
   static ZZ qq, r;

   if (IsZero(b)) {
      if (IsZero(a)) {
         clear(q);
         return 1;
      }
      else
         return 0;
   }


   if (IsOne(b)) {
      q = a;
      return 1;
   }

   DivRem(qq, r, a, b);
   if (!IsZero(r)) return 0;
   q = qq;
   return 1;
}

long divide(const ZZ& a, const ZZ& b)
{
   static ZZ r;

   if (IsZero(b)) return IsZero(a);
   if (IsOne(b)) return 1;

   rem(r, a, b);
   return IsZero(r);
}

long divide(ZZ& q, const ZZ& a, long b)
{
   static ZZ qq;

   if (!b) {
      if (IsZero(a)) {
         clear(q);
         return 1;
      }
      else
         return 0;
   }

   if (b == 1) {
      q = a;
      return 1;
   }

   long r = DivRem(qq, a, b);
   if (r) return 0;
   q = qq;
   return 1;
}

long divide(const ZZ& a, long b)
{
   if (!b) return IsZero(a);
   if (b == 1) {
      return 1;
   }

   long r = rem(a,  b);
   return (r == 0);
}
   


long RandomPrime_long(long l, long NumTrials)
{

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
香蕉影视欧美成人| 精品亚洲国内自在自线福利| 欧美一区二区三区视频免费播放 | 日韩精品一区二区三区在线观看| 国产999精品久久| 秋霞电影网一区二区| 一区二区三区在线视频观看| 久久久久久9999| 日韩一区二区三区免费观看| 91麻豆精品视频| 国产福利一区二区三区视频 | 亚洲乱码国产乱码精品精98午夜| 欧美成人性战久久| 欧美私人免费视频| 91网上在线视频| 成人网在线免费视频| 美女一区二区视频| 日韩专区在线视频| 一区二区三区四区在线| 国产欧美一区在线| 亚洲精品一区二区三区四区高清 | 久久99国产乱子伦精品免费| 亚洲精品久久7777| 综合在线观看色| 国产精品久久久久精k8| 国产视频视频一区| 久久噜噜亚洲综合| 欧美成人r级一区二区三区| 欧美精品视频www在线观看| 色琪琪一区二区三区亚洲区| 成人在线视频一区| 日韩美女一区二区三区四区| 欧美日韩午夜精品| 欧美日韩一卡二卡| 在线成人高清不卡| 欧美日韩不卡一区| 欧美丰满嫩嫩电影| 精品视频一区二区不卡| 欧美亚洲高清一区二区三区不卡| 99久久er热在这里只有精品15 | 欧美精品一区二区三区四区| 日韩欧美久久一区| 日韩亚洲欧美高清| 精品国产免费人成电影在线观看四季| 91精品久久久久久久91蜜桃| 欧美电影在哪看比较好| 在线不卡一区二区| 日韩亚洲欧美一区二区三区| 欧美一级欧美三级| 精品国产乱码久久久久久久| 久久精品一区八戒影视| 国产蜜臀av在线一区二区三区| 国产日韩欧美激情| 亚洲日本一区二区| 亚洲一区视频在线观看视频| 日韩专区中文字幕一区二区| 久久成人羞羞网站| 国产伦精一区二区三区| 国产馆精品极品| 成人免费高清视频| 欧美三级韩国三级日本一级| 日韩免费福利电影在线观看| 久久蜜臀精品av| 亚洲人亚洲人成电影网站色| 亚洲韩国精品一区| 日本欧美在线观看| 国产成人精品aa毛片| 色婷婷久久一区二区三区麻豆| 欧美日韩一区在线| 久久香蕉国产线看观看99| 国产精品久久久久一区二区三区 | 99视频精品免费视频| 欧美中文字幕一区二区三区| 欧美一区二区三区的| 国产网红主播福利一区二区| 一二三区精品福利视频| 日本中文在线一区| 成人丝袜视频网| 69堂精品视频| 国产精品国产自产拍高清av| 天堂久久久久va久久久久| 国产一区二区三区最好精华液| 91视频精品在这里| 日韩精品一区二区三区四区视频 | 日韩理论片在线| 久久精品国产亚洲高清剧情介绍| 丁香激情综合五月| 欧美人与性动xxxx| 中文字幕av一区 二区| 午夜精品123| 成人a区在线观看| 日韩欧美中文一区二区| 亚洲精品视频自拍| 国产在线国偷精品产拍免费yy| 色一区在线观看| 国产人久久人人人人爽| 秋霞电影网一区二区| 色丁香久综合在线久综合在线观看| 欧美xxxxx裸体时装秀| 亚洲综合丁香婷婷六月香| 国产成人免费视频网站| 欧美成人精品福利| 调教+趴+乳夹+国产+精品| 91在线精品秘密一区二区| 精品国产免费一区二区三区四区| 午夜视频在线观看一区| 99久久99久久免费精品蜜臀| 久久精品亚洲精品国产欧美 | 91国产福利在线| 国产精品久久毛片| 国产一区二区日韩精品| 日韩欧美国产三级电影视频| 午夜成人免费视频| 在线观看欧美黄色| 成人免费一区二区三区视频 | 色久综合一二码| 国产精品久久久久影院老司 | 一区二区高清在线| 91麻豆国产精品久久| 中文字幕第一区综合| 国产精品一品二品| 久久久精品蜜桃| 国产精一区二区三区| 久久综合九色综合97婷婷| 久久不见久久见中文字幕免费| 欧美精品1区2区3区| 婷婷综合另类小说色区| 欧美日韩黄色一区二区| 夜夜夜精品看看| 欧美午夜精品久久久| 一区二区免费看| 欧亚洲嫩模精品一区三区| 亚洲日本丝袜连裤袜办公室| 99视频一区二区| 亚洲精品综合在线| 色综合咪咪久久| 亚洲午夜av在线| 88在线观看91蜜桃国自产| 五月天一区二区| 欧美一区二区三区人| 精品一区二区三区香蕉蜜桃| 精品国产麻豆免费人成网站| 国产精品伊人色| 日本一区二区三区四区在线视频| 成人小视频免费在线观看| 国产精品视频第一区| 99这里只有久久精品视频| 亚洲乱码日产精品bd| 欧美午夜精品一区二区三区| 午夜天堂影视香蕉久久| 日韩亚洲欧美成人一区| 国产精品一区二区无线| 国产精品久久久久久久裸模| 91同城在线观看| 午夜国产精品一区| 精品不卡在线视频| 国产精品亚洲а∨天堂免在线| 中文在线一区二区| 欧美亚洲一区三区| 久久99久久精品欧美| 国产欧美精品在线观看| 色94色欧美sute亚洲线路二| 日韩国产欧美三级| 久久久精品中文字幕麻豆发布| av综合在线播放| 婷婷一区二区三区| 久久久久久久久久久久久女国产乱 | 激情六月婷婷久久| 综合自拍亚洲综合图不卡区| 欧美日韩不卡在线| 国产老肥熟一区二区三区| 国产精品久久久久久妇女6080| 欧美性欧美巨大黑白大战| 久久国产精品露脸对白| 国产精品国产三级国产aⅴ中文 | 欧美日韩一区 二区 三区 久久精品| 麻豆精品视频在线| 自拍偷拍亚洲综合| 日韩精品自拍偷拍| 91麻豆视频网站| 激情偷乱视频一区二区三区| 伊人一区二区三区| 精品免费视频.| 欧美亚洲一区二区在线观看| 国产乱理伦片在线观看夜一区| 亚洲一区二区三区中文字幕| 国产亚洲精品bt天堂精选| 欧美色视频在线| 丁香啪啪综合成人亚洲小说| 日韩成人伦理电影在线观看| 中文字幕va一区二区三区| 91精品国产91综合久久蜜臀| 色综合久久综合网欧美综合网| 国产一区二区三区视频在线播放| 亚洲国产裸拍裸体视频在线观看乱了| 久久精品在这里| 日韩欧美一二三区| 欧美人妇做爰xxxⅹ性高电影| 不卡一区在线观看| 精品一区二区精品|