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

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

?? fgint.pas

?? 經(jīng)典算法RSA,從其他地方得來的
?? PAS
?? 第 1 頁 / 共 3 頁
字號:
               If (Trest > 2147483647) Then rest := 0 Else rest := -1;
            End;
            size := size1;
            While (Sum.Number[size] = 0) And (size > 1) Do size := size - 1;
            If size < size1 Then
            Begin
               SetLength(Sum.Number, size + 1);
            End;
            Sum.Number[0] := size;
            Sum.Sign := FGInt1.Sign;
         End;
      End;
   End;
End;


Procedure FGIntChangeSign(Var FGInt : TFGInt);
Begin
   If FGInt.Sign = negative Then FGInt.Sign := positive Else FGInt.Sign := negative;
End;


// Substract 2 FGInts, FGInt1 - FGInt2 = dif

Procedure FGIntSub(Var FGInt1, FGInt2, dif : TFGInt);
Begin
   FGIntChangeSign(FGInt2);
   FGIntAdd(FGInt1, FGInt2, dif);
   FGIntChangeSign(FGInt2);
End;


// multiply a FGInt by an integer, FGInt * by = res, by < 1000000000

Procedure FGIntMulByInt(Const FGInt : TFGInt; Var res : TFGInt; by : int64);
Var
   i, size : longint;
   Trest, rest : int64;
Begin
   size := FGInt.Number[0];
   SetLength(res.Number, size + 2);
   rest := 0;
   For i := 1 To size Do
   Begin
      Trest := FGInt.Number[i] * by + rest;
      res.Number[i] := Trest And 2147483647;
      rest := Trest Shr 31;
   End;
   If rest <> 0 Then
   Begin
      size := size + 1;
      Res.Number[size] := rest;
   End
   Else SetLength(Res.Number, size + 1);
   Res.Number[0] := size;
   Res.Sign := FGInt.Sign;
End;


// multiply a FGInt by an integer, FGInt * by = res, by < 1000000000

Procedure FGIntMulByIntbis(Var FGInt : TFGInt; by : int64);
Var
   i, size : longint;
   Trest, rest : int64;
Begin
   size := FGInt.Number[0];
   SetLength(FGInt.Number, size + 2);
   rest := 0;
   For i := 1 To size Do
   Begin
      Trest := FGInt.Number[i] * by + rest;
      FGInt.Number[i] := Trest And 2147483647;
      rest := Trest Shr 31;
   End;
   If rest <> 0 Then
   Begin
      size := size + 1;
      FGInt.Number[size] := rest;
   End
   Else SetLength(FGInt.Number, size + 1);
   FGInt.Number[0] := size;
End;


// divide a FGInt by an integer, FGInt = res * by + modres

Procedure FGIntDivByInt(Const FGInt : TFGInt; Var res : TFGInt; by : int64; Var modres : int64);
Var
   i, size : longint;
   rest : int64;
Begin
   size := FGInt.Number[0];
   SetLength(res.Number, size + 1);
   modres := 0;
   For i := size Downto 1 Do
   Begin
      modres := modres Shl 31;
      rest := modres Or FGInt.Number[i];
      res.Number[i] := rest Div by;
      modres := rest Mod by;
   End;
   While (res.Number[size] = 0) And (size > 1) Do size := size - 1;
   SetLength(res.Number, size + 1);
   res.Number[0] := size;
   Res.Sign := FGInt.Sign;
End;


// divide a FGInt by an integer, FGInt = FGInt * by + modres

Procedure FGIntDivByIntBis(Var FGInt : TFGInt; by : int64; Var modres : int64);
Var
   i, size : longint;
   rest : int64;
Begin
   size := FGInt.Number[0];
   modres := 0;
   For i := size Downto 1 Do
   Begin
      modres := modres Shl 31;
      rest := modres Or FGInt.Number[i];
      FGInt.Number[i] := rest Div by;
      modres := rest Mod by;
   End;
   While (FGInt.Number[size] = 0) And (size > 1) Do size := size - 1;
   If size <> FGInt.Number[0] Then
   Begin
      SetLength(FGInt.Number, size + 1);
      FGInt.Number[0] := size;
   End;
End;


// Reduce a FGInt modulo by (=an integer), FGInt mod by = modres

Procedure FGIntModByInt(Const FGInt : TFGInt; by : int64; Var modres : int64);
Var
   i, size : longint;
   rest : int64;
Begin
   size := FGInt.Number[0];
   modres := 0;
   For i := size Downto 1 Do
   Begin
      modres := modres Shl 31;
      rest := modres + FGInt.Number[i];
      modres := rest Mod by;
   End;
End;


// Returns the FGInt in absolute value

Procedure FGIntAbs(Var FGInt : TFGInt);
Begin
   FGInt.Sign := positive;
End;


// Copy a FGInt1 into FGInt2

Procedure FGIntCopy(Const FGInt1 : TFGInt; Var FGInt2 : TFGInt);
Begin
   FGInt2.Sign := FGInt1.Sign;
   FGInt2.Number := Nil;
   FGInt2.Number := Copy(FGInt1.Number, 0, FGInt1.Number[0] + 1);
End;


// Shift the FGInt to the left in base 2 notation, ie FGInt = FGInt * 2

Procedure FGIntShiftLeft(Var FGInt : TFGInt);
Var
   l, m : int64;
   i, size : longint;
Begin
   size := FGInt.Number[0];
   l := 0;
   For i := 1 To Size Do
   Begin
      m := FGInt.Number[i] Shr 30;
      FGInt.Number[i] := ((FGInt.Number[i] Shl 1) Or l) And 2147483647;
      l := m;
   End;
   If l <> 0 Then
   Begin
      setlength(FGInt.Number, size + 2);
      FGInt.Number[size + 1] := l;
      FGInt.Number[0] := size + 1;
   End;
End;


// Shift the FGInt to the right in base 2 notation, ie FGInt = FGInt div 2

Procedure FGIntShiftRight(Var FGInt : TFGInt);
Var
   l, m : int64;
   i, size : longint;
Begin
   size := FGInt.Number[0];
   l := 0;
   For i := size Downto 1 Do
   Begin
      m := FGInt.Number[i] And 1;
      FGInt.Number[i] := (FGInt.Number[i] Shr 1) Or l;
      l := m Shl 30;
   End;
   If (FGInt.Number[size] = 0) And (size > 1) Then
   Begin
      setlength(FGInt.Number, size);
      FGInt.Number[0] := size - 1;
   End;
End;


// FGInt = FGInt / 2147483648

Procedure FGIntShiftRightBy31(Var FGInt : TFGInt);
Var
   size : longint;
Begin
   size := FGInt.Number[0];
   If size > 1 Then
   Begin
      FGInt.Number := Copy(FGInt.Number, 1, Size);
      FGInt.Number[0] := size - 1;
   End
   Else FGInt.Number[1] := 0;
End;


// FGInt1 = FGInt1 + FGInt2, FGInt1 > FGInt2

Procedure FGIntAddBis(Var FGInt1 : TFGInt; Const FGInt2 : TFGInt);
Var
   i, size1, size2 : longint;
   rest : integer;
   Trest : int64;
Begin
   size1 := FGInt1.Number[0];
   size2 := FGInt2.Number[0];
   rest := 0;
   For i := 1 To size2 Do
   Begin
      Trest := FGInt1.Number[i] + FGInt2.Number[i] + rest;
      rest := Trest Shr 31;
      FGInt1.Number[i] := Trest And 2147483647;
   End;
   For i := size2 + 1 To size1 Do
   Begin
      Trest := FGInt1.Number[i] + rest;
      rest := Trest Shr 31;
      FGInt1.Number[i] := Trest And 2147483647;
   End;
   If rest <> 0 Then
   Begin
      SetLength(FGInt1.Number, size1 + 2);
      FGInt1.Number[0] := size1 + 1;
      FGInt1.Number[size1 + 1] := rest;
   End;
End;


// FGInt1 = FGInt1 - FGInt2, use only when 0 < FGInt2 < FGInt1

Procedure FGIntSubBis(Var FGInt1 : TFGInt; Const FGInt2 : TFGInt);
Var
   i, size1, size2 : longint;
   rest : integer;
   Trest : int64;
Begin
   size1 := FGInt1.Number[0];
   size2 := FGInt2.Number[0];
   rest := 0;
   For i := 1 To size2 Do
   Begin
      Trest := 2147483648 + FGInt1.Number[i] - FGInt2.Number[i] + rest;
      If (Trest > 2147483647) Then rest := 0 Else rest := -1;
      FGInt1.Number[i] := Trest And 2147483647;
   End;
   For i := size2 + 1 To size1 Do
   Begin
      Trest := 2147483648 + FGInt1.Number[i] + rest;
      If (Trest > 2147483647) Then rest := 0 Else rest := -1;
      FGInt1.Number[i] := Trest And 2147483647;
   End;
   i := size1;
   While (FGInt1.Number[i] = 0) And (i > 1) Do i := i - 1;
   If i < size1 Then
   Begin
      SetLength(FGInt1.Number, i + 1);
      FGInt1.Number[0] := i;
   End;
End;


// Multiply 2 FGInts, FGInt1 * FGInt2 = Prod

Procedure FGIntMul(Const FGInt1, FGInt2 : TFGInt; Var Prod : TFGInt);
Var
   i, j, size, size1, size2 : longint;
   rest, Trest : int64;
Begin
   size1 := FGInt1.Number[0];
   size2 := FGInt2.Number[0];
   size := size1 + size2;
   SetLength(Prod.Number, size + 1);
   For i := 1 To size Do Prod.Number[i] := 0;

   For i := 1 To size2 Do
   Begin
      rest := 0;
      For j := 1 To size1 Do
      Begin
         Trest := Prod.Number[j + i - 1] + FGInt1.Number[j] * FGInt2.Number[i] + rest;
         Prod.Number[j + i - 1] := Trest And 2147483647;
         rest := Trest Shr 31;
      End;
      Prod.Number[i + size1] := rest;
   End;

   Prod.Number[0] := size;
   While (Prod.Number[size] = 0) And (size > 1) Do size := size - 1;
   If size < Prod.Number[0] Then
   Begin
      SetLength(Prod.Number, size + 1);
      Prod.Number[0] := size;
   End;
   If FGInt1.Sign = FGInt2.Sign Then Prod.Sign := Positive Else prod.Sign := negative;
End;


// Square a FGInt, FGInt

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美国产高清| 日本不卡不码高清免费观看| 国产精品99久| 精品成人免费观看| 国产一区二区三区日韩| www国产亚洲精品久久麻豆| 蜜臀av一区二区| 日韩一级片网站| 国内精品国产三级国产a久久| 日韩三级高清在线| 国产精品综合视频| 国产精品对白交换视频 | 午夜精品成人在线视频| 精品污污网站免费看| 视频一区视频二区中文| 日韩三级视频在线观看| 国产高清无密码一区二区三区| 亚洲国产精品成人综合| 欧美日韩亚洲综合| 激情综合亚洲精品| 亚洲久本草在线中文字幕| 欧美卡1卡2卡| 成人a区在线观看| 亚洲www啪成人一区二区麻豆| 精品国产伦一区二区三区观看方式| 国产成人夜色高潮福利影视| 一区二区三区成人在线视频| 欧美电影一区二区三区| 99在线精品观看| 久久国产剧场电影| 午夜影院久久久| 国产精品蜜臀av| 精品福利一区二区三区免费视频| av电影在线观看完整版一区二区| 午夜精品在线视频一区| 亚洲人成网站在线| 久久精品视频网| 精品美女在线播放| 日韩视频不卡中文| 欧美欧美欧美欧美| 在线日韩一区二区| 白白色 亚洲乱淫| 高清不卡一二三区| 国产伦理精品不卡| 国产一区免费电影| 国产一区久久久| 久久99热这里只有精品| 日本午夜一本久久久综合| 亚洲日本va午夜在线电影| 国产精品久久久久久久午夜片| 欧美tickling网站挠脚心| 欧美xxxxxxxx| 国产日韩成人精品| 国产精品久久久久9999吃药| 国产精品无码永久免费888| 亚洲国产精品av| 亚洲视频一区二区在线观看| 亚洲裸体xxx| 亚洲国产日韩av| 青青草91视频| 风间由美一区二区av101| 91社区在线播放| 欧美日韩国产大片| 亚洲精品一区二区三区四区高清| 久久久三级国产网站| 国产精品二区一区二区aⅴ污介绍| 国产精品第四页| 亚洲aaa精品| 国产精品一区二区在线看| 成人午夜av在线| 91精品国产欧美一区二区| 欧美精品一区二区三区蜜桃视频| 中文字幕免费不卡| 日本成人在线看| 成人丝袜高跟foot| 91麻豆精品国产91| 国产精品毛片无遮挡高清| 亚洲一区二区不卡免费| 国产在线播放一区| 91精品国产入口| 亚洲欧美国产77777| 国产麻豆91精品| 欧美性淫爽ww久久久久无| 久久一日本道色综合| 亚洲午夜久久久| 色综合一区二区| 国产亚洲欧美日韩日本| 日本不卡视频在线| 色天使色偷偷av一区二区| 国产人成亚洲第一网站在线播放| 亚洲成人激情av| 欧美午夜精品理论片a级按摩| 亚洲国产精品ⅴa在线观看| 国产在线视频精品一区| 日韩欧美你懂的| 日本亚洲视频在线| 91精品国产综合久久久久| 天堂va蜜桃一区二区三区漫画版| 色伊人久久综合中文字幕| 亚洲精品欧美专区| 色先锋久久av资源部| 亚洲一卡二卡三卡四卡五卡| 色94色欧美sute亚洲13| 亚洲男帅同性gay1069| 色一区在线观看| 亚洲chinese男男1069| 日韩免费性生活视频播放| 激情欧美一区二区| 国产精品日产欧美久久久久| 成人动漫在线一区| 亚洲欧美国产毛片在线| 欧美在线观看你懂的| 日本中文字幕一区二区有限公司| 日韩精品一区二区三区视频在线观看| 奇米在线7777在线精品| 久久久精品欧美丰满| 99精品视频在线观看免费| 亚洲成a人v欧美综合天堂| 精品国产污网站| 一本高清dvd不卡在线观看| 免费精品99久久国产综合精品| www精品美女久久久tv| 色老头久久综合| 久久99精品一区二区三区三区| 国产欧美日韩不卡免费| 91精品国产综合久久久久久久久久| 国产精品亚洲第一| 美日韩一级片在线观看| 亚洲欧美欧美一区二区三区| 久久影院午夜片一区| 91黄色激情网站| 不卡一区二区中文字幕| 国产精品正在播放| 天天色 色综合| 亚洲第一成人在线| 成人免费一区二区三区在线观看 | 国产一区二区三区不卡在线观看 | 国模大尺度一区二区三区| 午夜影院久久久| 亚洲成人免费av| 亚洲精品国产视频| 亚洲免费观看在线观看| 亚洲国产电影在线观看| 久久久久一区二区三区四区| 欧美一二三区在线观看| 69久久99精品久久久久婷婷| 欧美日韩国产成人在线免费| 欧美三级视频在线| 91成人免费网站| 91精品办公室少妇高潮对白| 色偷偷一区二区三区| 日本高清无吗v一区| 欧美日韩视频在线一区二区| 在线亚洲人成电影网站色www| 91美女福利视频| 欧美日韩性生活| 精品乱码亚洲一区二区不卡| 国产亚洲精品久| 1000部国产精品成人观看| 亚洲综合图片区| 日本欧美一区二区三区乱码| 捆绑变态av一区二区三区| 国产在线精品一区在线观看麻豆| 国产一区二区三区日韩| 色狠狠色噜噜噜综合网| 日韩天堂在线观看| 中文字幕日本乱码精品影院| 一区二区三区毛片| 国产自产视频一区二区三区| 成人av第一页| 日韩欧美中文字幕精品| 国产精品久久久久一区| 天天色图综合网| 91麻豆国产在线观看| 欧美mv日韩mv| 亚洲成人你懂的| 99精品久久免费看蜜臀剧情介绍| 欧美一区二区在线观看| 亚洲视频综合在线| 激情久久五月天| 欧美欧美午夜aⅴ在线观看| 中文欧美字幕免费| 国产美女视频一区| 7777精品伊人久久久大香线蕉完整版 | 亚洲精品少妇30p| 国产成人精品亚洲日本在线桃色| 91.com视频| 亚洲国产日韩综合久久精品| 91在线免费看| 国产精品天干天干在观线| 国产专区综合网| 日韩亚洲欧美成人一区| 亚洲狠狠爱一区二区三区| 色婷婷精品久久二区二区蜜臀av| 国产日产欧美一区二区视频| 国产精品亚洲а∨天堂免在线| 欧美成人r级一区二区三区| 免费人成在线不卡| 欧美一区二区视频在线观看2020| 日韩在线一二三区|