Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ############################################################
- ## 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
- }
Add Comment
Please, Sign In to add comment