############################################################ ## mIRC functions for factorisation , lcm , hcf , isprime ( $fact , $isprime , $hcf , $lcm) ## ## Version: 1.0 ## ## By: manish ## ## irc.lunarirc.net #LunarIRC #LunarGames User - manish ############################################################ alias fact { if ($isprime($1)) || ($1 == 1) { return $1 $+ ¹ } elseif ( $1 == 0 ) { return - } elseif ( $1 < 0 ) { return N/A } set %number $1 unset %answer while ( %number > 1 ) { set %power 0 set %no 2 set %max $calc( %number / 2) while ( %no <= %max ) { if ( %no // %number ) { set %number $calc( %number / %no ) inc %power } else { if ( %power == 0 ) { inc %no } else { set %answer %answer * %no $+ ^ $+ %power inc %no set %power 0 } } } } set %answer $right(%answer,-1) if ($isid) { return $replace(%answer,^0,⁰,^1,¹,^2,²,^3,³,^4,⁴,^5,⁵,^6,⁶,^7,⁷,^8,⁸,^9,⁹) } } alias isprime { if ( $round($1,0) != $1 ) || ($1 < 2) return $null if ($1 < 4) return $true if ($1 > 3) { if ( 2 // $1 ) { return $false } var %x = 1 var %y = $floor($sqrt($1)) while (%x < %y) { inc %x 2 if (%x // $1) return $false } return $true } } alias hcf { set %numbers $sorttok($1-,32,n) set %numtok $numtok(%numbers,32) set %first $gettok(%numbers,1,32) if (%first < 0 ) { return N/A } elseif (%first == 0 ) { return 0 } set %x 1 while ( %x <= %first ) { set %omg 1 set %y 0 while ( %omg <= %numtok ) { set %curtok $gettok(%numbers,%omg,32) if ( %x // %curtok ) { inc %y if ( %y == %numtok) { set %hcf %x } } inc %omg } inc %x } if ($isid) { return %hcf } } alias lcm { set %lcm 1 set %numbersare $sorttok($1-,32,n) set %first $gettok(%numbersare,1,32) if (%first < 0 ) { return N/A } elseif (%first == 0 ) { return 0 } elseif ( $numtok(%numbersare,32) == 1 ) { return %numbersare } while ( $numtok(%numbersare,32) > 1 ) { set %a $gettok(%numbersare,1,32) set %b $gettok(%numbersare,2,32) set %c $hcf(%a %b) set %lcm $calc( %a * %b / %c ) set %numbersare %lcm %numbersare set %numbersare $deltok(%numbersare,2-3,32) } return %lcm }