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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? zzxfactoring.c

?? 密碼大家Shoup寫的數論算法c語言實現
?? C
?? 第 1 頁 / 共 4 頁
字號:
                     loop_cnt++;                     if (i < ProdLen)                  ProdLen = i;                     if (i < ProdLen1)                  ProdLen1 = i;                     if (i < SumLen)                  SumLen = i;               long I_i = (++I[i]);               if (i == 0) break;                  if (I_i > r-k+i) {                  i--;               }               else {                  long pruned;                  if (pruning && r-I_i <= pruning) {                     long pos = r-I_i;                     unsigned long rs = ratio_sum[i-1];                     unsigned long index1 = (rs >> shamt_tab[pos][k-i]);                     if (lookup_tab[pos][k-i][index1 >> TBL_SHAMT] & (1UL << (index1&TBL_MSK)))                        pruned = 0;                     else                        pruned = 1;                  }                  else                     pruned = 0;                      if (pruned) {                     i--;                  }                  else {                     D[i] = D[i-1] + degv[I_i];                     ratio_sum[i] = ratio_sum[i-1] + ratio[I_i];                     i++;                     state = 0;                  }               }            }         }      }      restart: ;   }   done:   if (lookup_tab) {      long i, j;      for (i = 2; i <= init_pruning; i++) {         long len = min(k-1, i);         for (j = 2; j <= len; j++) {            delete [] lookup_tab[i][j];         }         delete [] lookup_tab[i];      }      delete [] lookup_tab;   }   if (shamt_tab) {      long i;      for (i = 2; i <= init_pruning; i++) {         delete [] shamt_tab[i];      }      delete [] shamt_tab;   }   if (verbose) {       end_time = GetTime();      cerr << "\n************ ";      cerr << "end cardinality " << k << "\n";      cerr << "time: " << (end_time-start_time) << "\n";      ZZ loops_max = choose_fn(initial_r+1, k);      ZZ tuples_max = choose_fn(initial_r, k);      loop_total += loop_cnt;      degree_total += degree_cnt;      n2_total += n2_cnt;      sl_total += sl_cnt;      ct_total += ct_cnt;      pl_total += pl_cnt;      c1_total += c1_cnt;      pl1_total += pl1_cnt;      td_total += td_cnt;      cerr << "\n";      PrintInfo("loops: ", loop_total, loops_max);      PrintInfo("degree tests: ", degree_total, tuples_max);      PrintInfo("n-2 tests: ", n2_total, tuples_max);      cerr << "ave sum len: ";      if (n2_total == 0)          cerr << "--";      else         cerr << (to_double(sl_total)/to_double(n2_total));      cerr << "\n";      PrintInfo("f(1) tests: ", c1_total, tuples_max);      cerr << "ave prod len: ";      if (c1_total == 0)          cerr << "--";      else         cerr << (to_double(pl1_total)/to_double(c1_total));      cerr << "\n";      PrintInfo("f(0) tests: ", ct_total, tuples_max);      cerr << "ave prod len: ";      if (ct_total == 0)          cerr << "--";      else         cerr << (to_double(pl_total)/to_double(ct_total));      cerr << "\n";      PrintInfo("trial divs: ", td_total, tuples_max);   }}staticvoid FindTrueFactors(vec_ZZX& factors, const ZZX& ff,                      const vec_ZZX& w, const ZZ& P,                      LocalInfoT& LocalInfo,                     long verbose,                     long bnd){   ZZ_pBak bak;   bak.save();   ZZ_p::init(P);   long r = w.length();   vec_ZZ_pX W;   W.SetLength(r);   long i;   for (i = 0; i < r; i++)      conv(W[i], w[i]);   ZZX f;   f = ff;   long k;   k = 1;   factors.SetLength(0);   while (2*k <= W.length()) {      if (k <= 2)         CardinalitySearch(factors, f, W, LocalInfo, k, bnd, verbose);      else         CardinalitySearch1(factors, f, W, LocalInfo, k, bnd, verbose);      k++;   }   append(factors, f);   bak.restore();}staticvoid ll_SFFactor(vec_ZZX& factors, const ZZX& ff,                  long verbose,                 long bnd)// input is primitive and square-free, with positive leading// coefficient{   if (deg(ff) <= 1) {      factors.SetLength(1);      factors[0] = ff;      if (verbose) {         cerr << "*** SFFactor, trivial case 1.\n";      }      return;   }   // remove a factor of X, if necessary   ZZX f;   long xfac;   long rev;   double t;   if (IsZero(ConstTerm(ff))) {      RightShift(f, ff, 1);      xfac = 1;   }   else {      f = ff;      xfac = 0;   }   // return a factor of X-1 if necessary   long x1fac = 0;   ZZ c1;   SumCoeffs(c1, f);   if (c1 == 0) {      x1fac = 1;      div(f, f, ZZX(1,1) - 1);   }   SumCoeffs(c1, f);   if (deg(f) <= 1) {      long r = 0;      factors.SetLength(0);      if (deg(f) > 0) {         factors.SetLength(r+1);         factors[r] = f;         r++;      }      if (xfac) {         factors.SetLength(r+1);         SetX(factors[r]);         r++;      }      if (x1fac) {         factors.SetLength(r+1);         factors[r] = ZZX(1,1) - 1;         r++;      }      if (verbose) {         cerr << "*** SFFactor: trivial case 2.\n";      }      return;   }   if (verbose) {      cerr << "*** start SFFactor.\n";   }   // reverse f if this makes lead coefficient smaller   ZZ t1, t2;   abs(t1, LeadCoeff(f));   abs(t2, ConstTerm(f));   if (t1 > t2) {      inplace_rev(f);      rev = 1;   }   else       rev = 0;   // obtain factorization modulo small primes   if (verbose) {      cerr << "factorization modulo small primes...\n";      t = GetTime();   }   LocalInfoT LocalInfo;   zz_pBak bak;   bak.save();   vec_zz_pX *spfactors =       SmallPrimeFactorization(LocalInfo, f, verbose);   if (!spfactors) {      // f was found to be irreducible       bak.restore();      if (verbose) {         t = GetTime()-t;         cerr << "small prime time: " << t << ", irreducible.\n";      }      if (rev)         inplace_rev(f);      long r = 0;      factors.SetLength(r+1);      factors[r] = f;      r++;      if (xfac) {         factors.SetLength(r+1);         SetX(factors[r]);         r++;      }      if (x1fac) {         factors.SetLength(r+1);         factors[r] = ZZX(1,1) - 1;         r++;      }      return;   }   if (verbose) {      t = GetTime()-t;      cerr << "small prime time: ";      cerr << t << ", number of factors = " << spfactors->length() << "\n";   }   // prepare for Hensel lifting   // first, calculate bit bound    long bnd1;   long n = deg(f);   long i;   long e;   ZZ P;   long p;      bnd1 = MaxBits(f) + (NumBits(n+1)+1)/2;   if (!bnd || bnd1 < bnd)      bnd = bnd1;   i = n/2;   while (!bit(LocalInfo.PossibleDegrees, i))      i--;   long lc_bnd = NumBits(LeadCoeff(f));   long coeff_bnd = bnd + lc_bnd + i;   long lift_bnd;   lift_bnd = coeff_bnd + 15;     // +15 helps avoid trial divisions...can be any number >= 0   lift_bnd = max(lift_bnd, bnd + lc_bnd + 2*NumBits(n) + ZZX_OVERLIFT);   // facilitates "n-1" and "n-2" tests   lift_bnd = max(lift_bnd, lc_bnd + NumBits(c1));   // facilitates f(1) test   lift_bnd += 2;   // +2 needed to get inequalities right   p = zz_p::modulus();   e = long(double(lift_bnd)/(log(double(p))/log(double(2))));   power(P, p, e);   while (NumBits(P) <= lift_bnd) {       mul(P, P, p);      e++;   }   if (verbose) {      cerr << "lifting bound = " << lift_bnd << "\n";      cerr << "Hensel lifting to exponent " << e << "...";      t = GetTime();   }   // third, compute f1 so that it is monic and equal to f mod P   ZZX f1;   if (LeadCoeff(f) == 1)      f1 = f;   else if (LeadCoeff(f) == -1)      negate(f1, f);   else {      rem(t1, LeadCoeff(f), P);      if (sign(P) < 0)         Error("whoops!!!");      InvMod(t1, t1, P);      f1.rep.SetLength(n+1);      for (i = 0; i <= n; i++) {         mul(t2, f.rep[i], t1);         rem(f1.rep[i], t2, P);      }   }   // Do Hensel lift   vec_ZZX w;   MultiLift(w, *spfactors, f1, e, verbose);   if (verbose) {      t = GetTime()-t;      cerr << t << "\n";   }   // We're done with zz_p...restore   delete spfactors;   bak.restore();   // search for true factors   if (verbose) {      cerr << "searching for true factors...\n";      t = GetTime();   }   FindTrueFactors(factors, f, w, P, LocalInfo,                    verbose, coeff_bnd);   if (verbose) {      t = GetTime()-t;      cerr << "factor search time " << t << "\n";   }   long r = factors.length();   if (rev) {      for (i = 0; i < r; i++) {         inplace_rev(factors[i]);         if (sign(LeadCoeff(factors[i])) < 0)            negate(factors[i], factors[i]);      }   }   if (xfac) {      factors.SetLength(r+1);      SetX(factors[r]);      r++;   }   if (x1fac) {      factors.SetLength(r+1);      factors[r] = ZZX(1,1)-1;      r++;   }   // that's it!!   if (verbose) {      cerr << "*** end SFFactor.  degree sequence:\n";      for (i = 0; i < r; i++)         cerr << deg(factors[i]) << " ";      cerr << "\n";   }}static long DeflationFactor(const ZZX& f){   long n = deg(f);   long m = 0;   long i;   for (i = 1; i <= n && m != 1; i++) {      if (f.rep[i] != 0)         m = GCD(m, i);   }   return m;}staticvoid inflate(ZZX& g, const ZZX& f, long m)// input may not alias output{   long n = deg(f);   long i;   g = 0;   for (i = n; i >= 0; i--)       SetCoeff(g, i*m, f.rep[i]);}staticvoid deflate(ZZX& g, const ZZX& f, long m)// input may not alias output{   long n = deg(f);   long i;   g = 0;   for (i = n; i >= 0; i -= m)       SetCoeff(g, i/m, f.rep[i]);}staticvoid MakeFacList(vec_long& v, long m){   if (m <= 0) Error("internal error: MakeFacList");   v.SetLength(0);   long p = 2;   while (m > 1) {      while (m % p == 0)  {         append(v, p);         m = m / p;      }      p++;   }}long ZZXFac_PowerHack = 1;void SFFactor(vec_ZZX& factors, const ZZX& ff,               long verbose,              long bnd)// input is primitive and square-free, with positive leading// coefficient{   if (ff == 0)       Error("SFFactor: bad args");   if (deg(ff) <= 0) {      factors.SetLength(0);      return;   }   if (!ZZXFac_PowerHack) {      ll_SFFactor(factors, ff, verbose, bnd);      return;   }   long m = DeflationFactor(ff);   if (m == 1) {      if (verbose) {         cerr << "SFFactor -- no deflation\n";      }      ll_SFFactor(factors, ff, verbose, bnd);      return;   }   vec_long v;   MakeFacList(v, m);   long l = v.length();   if (verbose) {      cerr << "SFFactor -- deflation: " << v << "\n";   }   vec_ZZX res;   res.SetLength(1);   deflate(res[0], ff, m);   long done;   long j, k;   done = 0;   k = l-1;   while (!done) {      vec_ZZX res1;      res1.SetLength(0);      for (j = 0; j < res.length(); j++) {         vec_ZZX res2;         double t;         if (verbose) {            cerr << "begin - step " << k << ", " << j << "; deg = "                  << deg(res[j]) << "\n";            t = GetTime();         }         ll_SFFactor(res2, res[j], verbose, k < 0 ? bnd : 0);         if (verbose) {            t = GetTime()-t;            cerr << "end   - step " << k << ", " << j << "; time = "                 << t << "\n\n";         }         append(res1, res2);      }      if (k < 0) {         done = 1;         swap(res, res1);      }      else {         vec_ZZX res2;         res2.SetLength(res1.length());         for (j = 0; j < res1.length(); j++)            inflate(res2[j], res1[j], v[k]);         k--;         swap(res, res2);      }   }   factors = res;}void factor(ZZ& c,            vec_pair_ZZX_long& factors,            const ZZX& f,            long verbose,            long bnd){   ZZX ff = f;   if (deg(ff) <= 0) {      c = ConstTerm(ff);      factors.SetLength(0);      return;   }   content(c, ff);   divide(ff, ff, c);   long bnd1 = MaxBits(ff) + (NumBits(deg(ff)+1)+1)/2;   if (!bnd || bnd > bnd1)      bnd = bnd1;   vec_pair_ZZX_long sfd;   double t;   if (verbose) { cerr << "square-free decomposition..."; t = GetTime(); }   SquareFreeDecomp(sfd, ff);   if (verbose) cerr << (GetTime()-t) << "\n";   factors.SetLength(0);   vec_ZZX x;   long i, j;   for (i = 0; i < sfd.length(); i++) {      if (verbose) {         cerr << "factoring multiplicity " << sfd[i].b              << ", deg = " << deg(sfd[i].a) << "\n";         t = GetTime();      }      SFFactor(x, sfd[i].a, verbose, bnd);      if (verbose) {         t = GetTime()-t;         cerr << "total time for multiplicity "               << sfd[i].b << ": " << t << "\n";      }      for (j = 0; j < x.length(); j++)         append(factors, cons(x[j], sfd[i].b));   }}NTL_END_IMPL

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
视频一区二区不卡| 青青草原综合久久大伊人精品优势 | 日韩欧美一区二区免费| 亚洲天堂a在线| 99国产欧美久久久精品| 亚洲一区二区在线观看视频| 狠狠色丁香久久婷婷综合_中| 加勒比av一区二区| 欧美无砖专区一中文字| 精品国产一区二区三区四区四| 亚洲人成亚洲人成在线观看图片 | 五月天网站亚洲| 欧美日韩国产高清一区| 亚洲国产va精品久久久不卡综合| 91福利社在线观看| 美女脱光内衣内裤视频久久网站| 精品国产三级a在线观看| 国产麻豆一精品一av一免费| 欧美激情中文不卡| 色哟哟精品一区| 免费观看成人鲁鲁鲁鲁鲁视频| 精品乱人伦小说| 色香蕉久久蜜桃| 国产一区二区不卡老阿姨| 亚洲婷婷综合色高清在线| 欧美日本在线播放| 成人免费观看av| 久久国产综合精品| 欧美精品一区二区不卡| 欧美激情综合五月色丁香| 国产综合久久久久影院| 色噜噜狠狠一区二区三区果冻| 亚洲乱码国产乱码精品精的特点 | 国产精品的网站| 色哟哟一区二区| 亚洲婷婷综合久久一本伊一区| 91美女蜜桃在线| 亚洲少妇屁股交4| 国产日韩欧美a| 色999日韩国产欧美一区二区| 欧美激情一区二区三区全黄| 777亚洲妇女| 欧美亚洲愉拍一区二区| 国产成a人亚洲精品| 日韩电影免费一区| 一区二区三区四区av| 国产午夜三级一区二区三| 欧美大片在线观看| 欧美丰满少妇xxxxx高潮对白 | 午夜精品福利一区二区三区蜜桃| 17c精品麻豆一区二区免费| 日韩一卡二卡三卡国产欧美| 欧美日韩国产在线观看| 欧美日韩中文另类| 6080亚洲精品一区二区| 欧美日韩电影在线| 91精品国产色综合久久不卡蜜臀| 欧美日韩一区二区三区不卡| 91色porny蝌蚪| 欧美疯狂性受xxxxx喷水图片| 欧美日精品一区视频| 欧美日本一区二区| 91精品国产手机| 中文字幕免费一区| 亚洲私人影院在线观看| 亚洲国产精品麻豆| 麻豆freexxxx性91精品| 国产99久久久国产精品潘金 | 欧美精品久久天天躁| 在线观看免费一区| 91精品免费在线| 国产欧美日韩中文久久| 亚洲影院在线观看| 国产一区在线观看视频| 91麻豆自制传媒国产之光| 欧美日韩不卡一区| 国产精品视频一区二区三区不卡| 一区二区三区成人在线视频| 奇米影视在线99精品| 91亚洲精华国产精华精华液| 7777精品伊人久久久大香线蕉的| 国产亚洲精品7777| 日日夜夜精品免费视频| 波多野结衣在线aⅴ中文字幕不卡| 色94色欧美sute亚洲线路一ni| 精品视频一区二区不卡| xfplay精品久久| 日韩制服丝袜先锋影音| 色老汉av一区二区三区| 欧美极品少妇xxxxⅹ高跟鞋| 久久国产成人午夜av影院| 色狠狠av一区二区三区| 国产精品久久午夜| 国产成人高清视频| 精品国产一区二区在线观看| 青青青伊人色综合久久| 欧美高清视频一二三区| 精品免费国产一区二区三区四区| 国产精品18久久久| 精品久久久久久久久久久久久久久久久| 一区二区中文视频| 91香蕉视频污| 亚洲综合免费观看高清在线观看| caoporm超碰国产精品| 国产精品久久久久精k8| a级精品国产片在线观看| 国产欧美日韩在线| 91色婷婷久久久久合中文| 国产精品高潮呻吟| 色天使色偷偷av一区二区| 亚洲精品国产一区二区三区四区在线 | 亚洲人成精品久久久久| 色哟哟一区二区三区| 亚洲成人综合网站| 精品少妇一区二区三区日产乱码| 精品在线播放免费| 国产精品亲子乱子伦xxxx裸| 欧美伊人久久大香线蕉综合69 | 蜜臀av一区二区在线免费观看| 欧美不卡123| 色偷偷久久一区二区三区| 日韩福利视频导航| 国产精品久久99| 欧美酷刑日本凌虐凌虐| 国产成人免费在线观看| 亚洲国产精品欧美一二99| 26uuu国产在线精品一区二区| 色诱视频网站一区| 高清成人免费视频| 麻豆精品在线播放| 亚洲一区二区av电影| 久久久久国产精品麻豆| 6080国产精品一区二区| 99热在这里有精品免费| 狠狠色狠狠色综合日日91app| 亚洲一区二区三区视频在线 | 91麻豆精品国产无毒不卡在线观看 | 91久久一区二区| 成人高清伦理免费影院在线观看| 亚洲成人福利片| 亚洲午夜久久久久久久久电影院| 国产精品视频一二三区| 精品国产一区二区三区不卡| 777色狠狠一区二区三区| 欧美性受xxxx黑人xyx| fc2成人免费人成在线观看播放| 国产精品亚洲午夜一区二区三区| 日韩中文字幕av电影| 日产国产欧美视频一区精品| 亚洲午夜久久久久中文字幕久| 亚洲伦理在线精品| 亚洲综合一区二区| 午夜精品aaa| 日韩av不卡在线观看| 精品亚洲国产成人av制服丝袜| 日韩主播视频在线| 国产乱色国产精品免费视频| 福利电影一区二区| 色综合久久六月婷婷中文字幕| 欧美中文字幕不卡| 9191精品国产综合久久久久久| 日韩欧美亚洲国产另类| 2020国产精品自拍| 亚洲欧洲日本在线| 日本成人在线看| 国产成人午夜电影网| 色欲综合视频天天天| 欧美一级片免费看| 亚洲欧美自拍偷拍色图| 亚洲资源中文字幕| 奇米亚洲午夜久久精品| 成人污视频在线观看| 欧美日韩三级一区二区| 久久久精品天堂| 午夜免费久久看| 岛国精品一区二区| 在线综合视频播放| 亚洲日本va在线观看| 久久成人免费网站| 91久久精品国产91性色tv | 亚洲精品在线网站| 亚洲一二三区不卡| 成人精品gif动图一区| 91精品国产综合久久久蜜臀粉嫩| 亚洲视频一区在线| 丁香另类激情小说| 久久影院午夜片一区| 久久精品国产99国产精品| 91福利国产成人精品照片| 中文字幕第一页久久| 国产在线不卡视频| 精品福利二区三区| 久久不见久久见免费视频7| 在线成人av网站| 亚洲福利视频一区二区| 色婷婷国产精品久久包臀| 国产精品进线69影院| av在线不卡观看免费观看| 国产欧美日韩视频在线观看| 成人黄色在线网站|