home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a012 / 1.ddi / CHAP21.EXE / CHP2111.PRG < prev    next >
Encoding:
Text File  |  1991-04-30  |  1.6 KB  |  84 lines

  1. /*
  2.    Listing 21.11  Mathematics
  3.    Author: Joe Booth
  4.    Excerpted from "Clipper 5: A Developer's Guide"
  5.    Copyright (c) 1991 M&T Books
  6.                       501 Galveston Drive
  7.                       Redwood City, CA 94063-4728
  8.                       (415) 366-3600
  9. */
  10.  
  11. function Bin2dec(cBinary)
  12. LOCAL nDec:=0,jj
  13. for jj=1 to len(cBinary)
  14.    nDec:=nDec+nDec+val(substr(cBinary,jj,1))
  15. next
  16. return nDec
  17.  
  18.  
  19. function Dec2bin(nDecimal)
  20. LOCAL nTemp:=nDecimal,cBinary:=""
  21. LOCAL nDiv :=int(nTemp/2),nRem:=0
  22. while nDiv <> 0
  23.    nRem    := nTemp-(2*nDiv)
  24.    cBinary := substr("01",nRem+1,1)+cBinary
  25.    nTemp   := nDiv
  26.    nDiv    := int(nTemp/2)
  27. enddo
  28. return cBinary
  29.  
  30.  
  31. function Hex2dec(cHex)
  32. LOCAL nDec:=0,jj
  33. for jj=1 to len(cHex)
  34.    nDec=nDec*16 + at(substr(cHex,jj,1),"0123456789ABCDEF")
  35. next
  36. return nDec
  37.  
  38.  
  39. function Dec2hex(nDec)
  40. LOCAL nTemp:=nDec,cHex:=""
  41. LOCAL nDiv :=int(nTemp/16),nRem:=0
  42. while nDiv <> 0
  43.    nRem  := nTemp-(16*nDiv)
  44.    cHex  := substr("0123456789ABCDEF",nRem+1,1)+cHex
  45.    nTemp := nDiv
  46.    nDiv  := int(nTemp/16)
  47. enddo
  48. return cHex
  49.  
  50.  
  51. function Gcd(nX,nY)
  52. LOCAL rmd:=1,quot:=0
  53. while rmd <> 0
  54.    quot:=int(nX/nY) ; rmd := nX - (nY*quot)
  55.    if rmd <> 0
  56.       nX:=nY ; nY := rmd
  57.    endif
  58. enddo
  59. return nY
  60.  
  61.  
  62. function Isprime(nX)
  63. LOCAL jj
  64. if nX = 1
  65.    return .F.
  66. elseif nX < 4
  67.    return .T.
  68. endif
  69. if nX = int(nX/2)*2
  70.    return .F.
  71. endif
  72. for jj=3 to int(sqrt(nX)) step 2
  73.    if nX=int(nX/jj)*jj
  74.       return .F.
  75.    endif
  76. next
  77. return .T.
  78.  
  79.  
  80. function lcm(nX,nY)
  81. return nX*nY/gcd(nX,nY)
  82.  
  83. // end of file CHP2111.PRG
  84.