วิกิพีเดีย
มอดูล:Factorization
นี่เป็นมอดูลที่ถูกป้องกันถาวรเนื่องจากมีความเสี่ยงสูง กรุณาอภิปรายการเปลี่ยนแปลงใด ๆ ทางหน้าคุย คุณอาจส่งคำขอแก้ไขไปยังผู้ดูแลระบบเพื่อให้แก้ไขได้หากเป็นการแก้ไขที่ไม่มีการคัดค้านหรือมีความเห็นพ้องสนับสนุน คุณยังสามารถขอให้เลิกป้องกันหน้าได้ |
คู่มือการใช้งานมอดูล[สร้าง]
คุณอาจจะต้องการสร้างคู่มือการใช้งานของมอดูลนี้ ผู้เขียนสามารถทำการทดลองได้ที่กระบะทราย (สร้าง | คัดลอก) และชุดทดสอบ (สร้าง) ของมอดูลนี้ โปรดเพิ่มหมวดหมู่ไปที่หน้าย่อย /doc หน้าย่อยของมอดูลนี้ |
local p = {} function p.factor(frame) number = tonumber(frame.args[1]) productSymbol = frame.args['product'] or '·' bold = frame.args['bold'] and true big = frame.args['big'] and true serif = frame.args['serif'] and true primeLink = frame.args['prime'] and true number = math.floor(number) if number < 2 or number > 1000000 then return '<strong class="error">number out of range</strong>' end result = "" currentNumber = number power = 0 --First take care of 2, the only even prime number. if currentNumber % 2 == 0 then result = '2' currentNumber = currentNumber / 2 power = 1 end while currentNumber % 2 == 0 do currentNumber = currentNumber / 2 power = power + 1 end if power > 1 then result = result..'<sup>'..power..'</sup>'..productSymbol..' ' elseif power == 1 then result = result..' '..productSymbol..' ' end --Now do all odd numbers. prime = 3 while prime <= math.sqrt(currentNumber) do power = 0 if currentNumber % prime == 0 then result = result..prime currentNumber = currentNumber / prime power = 1 end while currentNumber % prime == 0 do currentNumber = currentNumber / prime power = power + 1 end if power > 1 then result = result..'<sup>'..power..'</sup>'..productSymbol..' ' elseif power == 1 then result = result..' '..productSymbol..' ' end prime = prime + 2 end if currentNumber ~= 1 then result = result..currentNumber..' '..productSymbol..' ' end if currentNumber == number and primeLink then return '[['..'prime'..']]' end result = string.sub(result,1,-4) return format(result) end function format(num) if bold then num = '<b>'..num..'</b>' end if serif then if big then num = '<span class="texhtml" style="font-size:165%">'..num..'</span>' else num = '<span class="texhtml">'..num..'</span>' end elseif big then num = '<span style="font-size:165%">'..num..'</span>' end return num end return p