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

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

?? mathslib.pas

?? Delphi的大數運算演示 pudn上大多是VC的 所以傳個Delphi的
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
unit MathsLib;

{Copyright 2005, Gary Darby, Intellitech Systems Inc., www.DelphiForFun.org

 This program may be used or modified for any non-commercial purpose
 so long as this original notice remains in place.
 All other rights are reserved
 }

 {Assortment of math related functions and procedure in various states}


 {Revision Copyright 2006, Charles Doumar,  January 2006
 Added:
   Tprimes.BSPrime ... Binary search function to find index of prime in prime table.
   Tprimes.MaxPrimeInTable ... Returns Max Prime in prime table.
   Tprimes.GetNthPrime ... Returns Nth prime in table (returns -1 if not in table).
 Optimized:
    Tprimes.IsPrime ... Optimized for values greater than MaxPrimeInTable squared.
    Tprimes.NextPrime ... Speed up lookup of values within table range, added large value support
    Tprime.PrevPrime ... Speed up lookup of values within table range, added large value support
    Tprime.GetFactors ... Now returns factors for numbers greater than MaxPrimeInTable Squared
  }

interface

uses Classes, SysUtils, Windows, Dialogs, UBigIntsV2;

type
  intset = set of byte;

  TPoint64=record
    x,y:int64;
  end;

function GetNextPandigital(size: integer; var Digits: array of integer): boolean;
function IsPolygonal(T: int64; var rank: array of integer): boolean;
function GeneratePentagon(n: integer): integer;
function IsPentagon(p: integer): boolean;
function isSquare(const N: int64): boolean;
function isCube(const N: int64): boolean;


function isPalindrome(n: int64): boolean;
function GetEulerPhi(n: int64): int64;
//procedure SortStrDown(var s: string);
//procedure rotatestrleft(var s: string);


function IntPower(a, b: int64): int64;
function gcd2(a, b: int64): int64;
function GCDMany(A: array of integer): integer;
function LCMMany(A: array of integer): integer;
procedure ContinuedFraction(A: array of int64; const wholepart: integer;
  var numerator, denominator: int64);
function Factorial(n: int64): int64;

type
  TPrimes = class(TObject)
  protected
    function BSPrime(const n: int64; var index: integer): boolean;
  public
    Prime:    array of int64;  {Array of primes - 0th entry is not used}
    nbrprimes, nbrfactors, nbrcanonicalfactors, nbrdivisors: integer;
    Factors:  array of int64; {array of factors - 0th entry is not used}
    CanonicalFactors: array of TPoint64;
    Divisors: array of int64;
    function GetNextPrime(n: int64): int64;
    function GetPrevPrime(n: int64): int64;
    function IsPrime(n: int64): boolean;
    procedure GetFactors(const n: int64);  {get all prime factors}
    function MaxPrimeInTable: int64;
    function GetNthPrime(const n: integer): int64;
    procedure GetCanonicalFactors(const n: int64);  {get ccanonical prime factors}
    procedure GetDivisors(const n: int64);          {get all divisors}
    function Getnbrdivisors(n: int64): integer;

    constructor Create;
    destructor Destroy; override;
  end;

var
  Primes:        TPrimes;
  maxprimes:     integer = 50000; {initial size of primes array}
  maxfactors:    integer = 200;   {initial size of factors array}
  maxval:        int64 = 1000000000000;
  {10^12 - 10^6 is  max prime to be tested from tables}
  {primes up to the sqrt of maxval will be tabled}
  continuants:   array of int64;
  maxcontinuant: integer;

implementation

uses Math;

var
  nbrdiv: int64;

{************* Nbrfactors *************}
function nbrfactors(n: integer): integer;
var
  i: integer;
begin
  Result := 0;
  for i := 1 to trunc(0.0 + sqrt(n)) - 1 do
    if n mod i = 0 then
      Result := Result + 2;
  if n mod trunc(0.0 + sqrt(n)) = 0 then
    Inc(Result); {perfect square}
end;



{************ IsPrime **********}
function isprime(f: int64): boolean;
(*
var
  i:    int64;
  stop: int64;
*)
begin
  result:=primes.isprime(f);
end;

{************* IsSquare *************}
function isSquare(const N: int64): boolean;
var
  ex: extended;
  x:  int64;
begin
  ex     := sqrt(N + 0.0);
  x      := trunc(ex + 1e-10);
  Result := x * x = N;
end;

{************* IsCube *************}
function isCube(const N: int64): boolean;
var
  ex: extended;
  x:  int64;
begin
  ex     := (exp(ln(0.0 + N) / 3));
  x      := trunc(ex + 1e-6);
  Result := x * x * x = N;
end;

function gcd2(a, b: int64): int64;
  {return gcd of a and b}
  {Euclids method}
var
  g, z: int64;
begin
  g := b;
  if b <> 0 then
    while g <> 0 do
    begin
      z := a mod g;
      a := g;
      g := z;
    end;
  Result := a;
end;

function GCDMany(A: array of integer): integer;
  {Greatest common denominator}

var
  i: integer;
  {m:integer;}
  g: integer;
begin
  {   result:=0; }
   (*
   m:=minintvalue(a);
   g:=gcd2(m,a[0]);
   For i := 1 to length(a)-1 do g:=min(gcd2(m,a[i]),g);
   *)
  g := a[0];
  if length(a) >= 2 then
  begin
    g := gcd2(g, a[1]);
    if length(a) > 2 then
      for i := 2 to length(a) - 1 do
        g := gcd2(g, a[i]);
  end;
  Result := g;
end;

function LCMMany(A: array of integer): integer;
var
  i, x: integer;
begin
  x := a[0];
  for i := 1 to length(a) - 1 do
    x := (x * a[i]) div gcd2(x, a[i]);
  Result := x;
end;

function intpower(a, b: int64): int64;
var
  i: integer;
begin
  Result := 1;
  for i := 1 to b do
    Result := Result * a;
end;

function getEulerPhi(n: int64): int64;
var
  i: integer;
  p: int64;
  k: int64;
begin
  primes.getfactors(n);
  Result := 1;
  p      := primes.factors[1];
  k      := 0;
  for i := 1 to primes.nbrfactors do
  begin
    if p = primes.factors[i] then
      Inc(k)
    else
    begin
      Result := Result * (p - 1) * intpower(p, k - 1);
      k      := 1;
      p      := primes.factors[i];
    end;
  end;
  Result := Result * (p - 1) * intpower(p, k - 1);
end;


{**************** LoadCommaText **********}
procedure loadcommatext(list: TStringList; filename: string);
var
  f:    Textfile;
  line: string;
begin
  assignfile(f, filename);
  reset(f);
  readln(f, line);
  list.commatext := line;
  closefile(f);
end;


{**************** GetBigComboCount *************}
procedure GetBigCombocount(const r, n: integer; var ccount: TInteger);
{Return number of combinations -- n things taken r at a time
 without replacement}
{Return number of combinations -- n things taken r at a time
 without replacement}
var
  work: TInteger;
begin
  work := TInteger.Create;
  if (r > 0) and (r < n) then
  begin
    ccount.Assign(N);
    ccount.Factorial;
    work.Assign(r);
    work.Factorial;
    ccount.Divide(work);
    work.Assign(n - r);
    work.Factorial;
    ccount.Divide(work);
  end
  else if r = n then
    ccount.Assign(1)
  else
    ccount.Assign(0);
  work.Free;
end;



{*************** IsPandigital *******}
function ispandigital(const n, Base: int64;
  const includezero, exactlyOnce: boolean): boolean;
var
  i:      integer;
  Digits: array of integer;
begin
  SetLength(Digits, Base);
  for i := 0 to Base - 1 do
    Digits[i] := 0;
  Result := True;
  i := n;
  while i > 0 do
  begin
    Inc(Digits[i mod Base]);
    i := i div Base;
  end;
  {sure that all digit from 1 to max digit found occured exactly once and no higher digit occurred a all}
  for i := 0 to Base - 1 do
  begin
    if exactlyonce then
    begin
      if ((i = 0) and includezero and (Digits[i] <> 1)) or
        ((i > 0) and (Digits[i] <> 1)) then
      begin
        Result := False;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月天一区二区| 中文字幕欧美日韩一区| 午夜视频一区在线观看| 欧美三电影在线| 青青草97国产精品免费观看| 欧美电影免费观看完整版| 激情五月播播久久久精品| 国产色产综合色产在线视频| jiyouzz国产精品久久| 亚洲欧洲综合另类在线| 欧美在线观看视频一区二区三区| 亚洲成人精品一区| 精品国产乱码久久久久久夜甘婷婷| 国产a久久麻豆| 亚洲精品视频免费观看| 日韩美女一区二区三区四区| 成人综合婷婷国产精品久久蜜臀| 亚洲激情综合网| 精品捆绑美女sm三区| 99热这里都是精品| 三级欧美在线一区| 中文在线免费一区三区高中清不卡 | 国产成人免费视| 亚洲欧美自拍偷拍色图| 6080yy午夜一二三区久久| 国产真实精品久久二三区| 国产精品高清亚洲| 欧美嫩在线观看| 精品影视av免费| 亚洲一区二区三区四区的| 欧美一区二区女人| 成人免费高清视频在线观看| 一个色综合网站| 日韩欧美另类在线| 成人国产视频在线观看 | 亚洲一区在线观看免费观看电影高清| 欧美午夜片在线看| 久久99久久99| 国产精品不卡在线| 91精品综合久久久久久| 午夜精品久久久久久久蜜桃app| 欧美国产日产图区| 色老头久久综合| 九九九精品视频| 亚洲欧美一区二区三区孕妇| 4hu四虎永久在线影院成人| 国产成人免费视频| 亚洲一区二区在线免费看| 日韩欧美视频在线| 99久久国产综合色|国产精品| 视频一区免费在线观看| 国产欧美精品一区aⅴ影院 | 亚洲成在线观看| 久久精品亚洲乱码伦伦中文| 欧美日韩另类国产亚洲欧美一级| 国产成人亚洲综合a∨婷婷图片| 亚洲尤物在线视频观看| 欧美国产成人精品| 日韩精品一区二区三区视频| 色狠狠桃花综合| 国产不卡高清在线观看视频| 天堂久久久久va久久久久| 亚洲色图色小说| 久久久一区二区三区捆绑**| 欧美三级韩国三级日本三斤| 成人app下载| 国产精品一区二区黑丝| 亚洲18影院在线观看| 中文av字幕一区| 久久久久久**毛片大全| 欧美一区二区久久| 欧美日韩一区二区三区免费看| 国产精品69毛片高清亚洲| 日本不卡一区二区三区高清视频| 亚洲视频一区二区免费在线观看| 久久精品一区二区三区av| 日韩免费视频一区二区| 欧美视频一区在线| 91小宝寻花一区二区三区| 成人a区在线观看| 成人午夜电影小说| 国产精品一区二区不卡| 日本三级亚洲精品| 韩国v欧美v日本v亚洲v| 麻豆视频一区二区| 日本欧美韩国一区三区| 五月激情综合色| 亚洲成av人片在www色猫咪| 亚洲一区二区三区影院| 亚洲永久免费av| 亚洲a一区二区| 日韩和欧美的一区| 午夜不卡在线视频| 日韩成人伦理电影在线观看| 爽好多水快深点欧美视频| 免费看日韩精品| 亚洲日本在线天堂| 最新国产精品久久精品| 久久成人av少妇免费| 日韩中文字幕不卡| 美女视频黄 久久| 精品一区二区三区免费播放| 国产毛片精品视频| 国产精品一级片在线观看| 成人亚洲一区二区一| jlzzjlzz国产精品久久| 91国模大尺度私拍在线视频| 欧美视频一区在线观看| 日韩欧美久久久| 久久美女艺术照精彩视频福利播放| 日韩一级免费观看| 精品国产制服丝袜高跟| 欧美极品少妇xxxxⅹ高跟鞋| 亚洲免费观看高清完整版在线| 亚洲一区国产视频| 精品一区二区免费| 成人综合婷婷国产精品久久| 91麻豆视频网站| 正在播放一区二区| 久久久国产一区二区三区四区小说| 亚洲国产精品成人综合| 亚洲国产视频一区| 精品一区二区久久久| av在线不卡免费看| 色欧美日韩亚洲| 日韩精品一区在线观看| 国产精品青草综合久久久久99| 亚洲黄网站在线观看| 久99久精品视频免费观看| 成人涩涩免费视频| 欧美色手机在线观看| 91精品国产综合久久久蜜臀图片| 精品免费一区二区三区| 中文字幕永久在线不卡| 乱中年女人伦av一区二区| 99久久国产免费看| 日韩欧美你懂的| 亚洲一区中文日韩| 成人免费av在线| 91精品婷婷国产综合久久竹菊| 中文天堂在线一区| 蜜臀国产一区二区三区在线播放| 99久久免费国产| 亚洲精品在线电影| 欧美极品美女视频| 亚洲国产成人高清精品| 风间由美一区二区三区在线观看| 欧美影视一区二区三区| 国产视频一区在线播放| 麻豆精品一区二区三区| 99精品黄色片免费大全| 2023国产精品| 蜜臀av性久久久久蜜臀aⅴ流畅| 91免费国产视频网站| 国产欧美在线观看一区| 老司机免费视频一区二区三区| 99国产一区二区三精品乱码| 国产喷白浆一区二区三区| 蓝色福利精品导航| 欧美精三区欧美精三区| 亚洲综合免费观看高清完整版 | 蜜臀av一区二区| 在线观看一区不卡| 亚洲欧洲在线观看av| 国产一区二区不卡在线| 日韩午夜电影在线观看| 亚洲欧美综合色| 国产乱码精品一区二区三区五月婷| 欧美福利一区二区| 亚洲国产视频网站| 欧美午夜精品一区二区蜜桃| 自拍视频在线观看一区二区| 岛国精品在线观看| 337p日本欧洲亚洲大胆精品| 久久福利视频一区二区| 91精品国产综合久久国产大片| 亚洲综合一二三区| 欧美丝袜丝nylons| 国产精品美女www爽爽爽| 97久久精品人人爽人人爽蜜臀| 欧美韩国一区二区| 成人精品国产免费网站| 亚洲国产成人自拍| 99久久99久久久精品齐齐| 国产精品二三区| 91免费国产在线| 亚洲五月六月丁香激情| 日韩一区二区三免费高清| 奇米888四色在线精品| 日韩精品中文字幕一区| 久久99国内精品| 国产欧美日韩在线视频| 丰满白嫩尤物一区二区| 亚洲欧洲精品一区二区三区不卡| av中文字幕不卡| 一区二区三国产精华液| 日韩欧美综合一区| 国产精品性做久久久久久| 欧美国产乱子伦| 99在线精品免费|