manish

mirc Useful Functions - $fact , $hcf , $lcm , $isprime

Jun 12th, 2017
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
mIRC 2.43 KB | None | 0 0
  1. ############################################################
  2. ##      mIRC functions for factorisation , lcm , hcf , isprime    ( $fact , $isprime , $hcf , $lcm)      ##
  3. ##       Version: 1.0              ##
  4. ##       By: manish              ##
  5. ##       irc.lunarirc.net   #LunarIRC #LunarGames   User - manish  
  6. ############################################################
  7. alias fact {
  8.   if ($isprime($1)) || ($1 == 1) { return $1 $+ ¹ }
  9.   elseif ( $1 == 0 ) { return - }
  10.   elseif ( $1 < 0 ) { return N/A }
  11.   set %number $1
  12.   unset %answer
  13.   while ( %number > 1 ) {
  14.     set %power 0
  15.     set %no 2
  16.     set %max $calc( %number / 2)
  17.     while ( %no <= %max ) {
  18.       if ( %no // %number ) {
  19.         set %number $calc( %number / %no )
  20.         inc %power
  21.       }
  22.       else {
  23.         if ( %power == 0 ) { inc %no }
  24.         else {
  25.           set %answer %answer * %no $+ ^ $+ %power
  26.           inc %no
  27.           set %power 0
  28.         }
  29. }
  30. }
  31. }
  32.   set %answer $right(%answer,-1)
  33.   if ($isid) { return $replace(%answer,^0,⁰,^1,¹,^2,²,^3,³,^4,⁴,^5,⁵,^6,⁶,^7,⁷,^8,⁸,^9,⁹) }
  34. }
  35.  
  36. alias isprime {
  37.  if ( $round($1,0) != $1 ) || ($1 < 2) return $null
  38.   if ($1 < 4) return $true
  39.   if ($1 > 3) {
  40.    if ( 2 // $1 ) { return $false }
  41.     var %x = 1
  42.     var %y = $floor($sqrt($1))
  43.     while (%x < %y) {
  44.       inc %x 2
  45.       if (%x // $1) return $false
  46.     }
  47.     return $true
  48.   }
  49. }
  50.  
  51. alias hcf {
  52.   set %numbers $sorttok($1-,32,n)
  53.   set %numtok $numtok(%numbers,32)
  54.   set %first $gettok(%numbers,1,32)
  55.   if (%first < 0 ) { return N/A }
  56.   elseif (%first == 0 ) { return 0 }
  57.   set %x 1
  58.   while ( %x <= %first ) {
  59.     set %omg 1
  60.     set %y 0
  61.     while ( %omg <= %numtok ) {
  62.       set %curtok $gettok(%numbers,%omg,32)
  63.       if ( %x // %curtok ) {
  64.         inc %y
  65.         if ( %y == %numtok) { set %hcf %x }
  66.       }
  67.       inc %omg
  68.     }
  69.     inc %x
  70.   }
  71.   if ($isid) { return %hcf }
  72. }
  73.  
  74. alias lcm {
  75.   set %lcm 1
  76.   set %numbersare $sorttok($1-,32,n)
  77.   set %first $gettok(%numbersare,1,32)
  78.   if (%first < 0 ) { return N/A }
  79.   elseif (%first == 0 ) { return 0 }
  80. elseif ( $numtok(%numbersare,32) == 1 ) { return %numbersare }
  81.  
  82.   while ( $numtok(%numbersare,32) > 1 ) {
  83.     set %a $gettok(%numbersare,1,32)
  84.     set %b $gettok(%numbersare,2,32)
  85.     set %c $hcf(%a %b)
  86.     set %lcm $calc( %a * %b / %c )
  87.     set %numbersare %lcm %numbersare
  88.     set %numbersare $deltok(%numbersare,2-3,32)
  89.   }
  90.   return %lcm
  91. }
Add Comment
Please, Sign In to add comment