fbpx
วิกิพีเดีย

การหารเชิงทดลอง

การหารเชิงทดลอง (อังกฤษ: trial division) เป็นขั้นตอนวิธีที่ทำความเข้าใจได้ง่าย เนื่องจากเป็นขั้นตอนวิธีที่ใช้วิธีการแบบบรู๊ทฟอร์ซ (brute-force) เพื่อช่วยในการแยกตัวประกอบของจำนวนเต็ม n โดยตรวจสอบว่ามีจำนวนเฉพาะใดๆที่มากกว่า 1 แต่น้อยกว่า n ที่สามารถหาร n ได้ลงตัว โดยวิธีนี้มักใช้กับการแยกตัวประกอบของจำนวนเต็มค่าน้อยๆ เนื่องจากประสิทธิภาพเชิงเวลาค่อนข้างช้า

คำอธิบาย

การหารเชิงทดลองนั้น ใช้หลักของการหาขอบเขตล่างและขอบเขตบน(lower bound&upper bound)เข้ามาช่วย กำหนดให้ จำนวนเต็ม n= s×t และ s ≤ t เราจะทำการตรวจสอบว่ามี s | n (หมายถึง s หาร n ได้ลงตัว) สำหรับจำนวน s = {2, ..., √n} โดยขอบเขตบน คือ s ≤ √n นั้น มีทฤษฎีดังนี้

ทฤษฎี : ตัวประกอบเฉพาะของจำนวนเต็มใดๆ จะต้องมีค่าน้อยกว่าหรือเท่ากับรากที่สองของจำนวนเต็มนั้นๆ

บทพิสูจน์ : สมมุติให้ s > √n ดังนั้น t ≥ s > √n เป็นผลให้ n < s×t ทำให้ขัดแย้งกับข้อเท็จจริง n = s×t เพราะฉะนั้น s ≤ N


ตัวอย่างที่1 : ให้จำนวนเต็มบวก n มีค่าเท่ากับ 7399 สามารถแสดงขั้นตอนวิธีการทำได้ดังนี้

  1. ทดลองนำจำนวนเฉพาะ 2,3,5 มาหารพบว่า ไม่ใช่ตัวประกอบของ n (หาร n ไม่ลงตัว)
  2. ทดลองนำจำนวนเฉพาะ 7 พบว่า 7 เป็นตัวประกอบของ n โดย n/7 = 1057
  3. จากนั้นลองนำ 7 มาหารซ้ำอีกครั้ง พบว่า 7 เป็นตัวประกอบของ 1057 ทำให้ 1057/7 = 151
  4. ลองนำ 7 มาหารอีกครั้ง พบว่าหารไม่ลงตัว ดังนั้น 7 ไม่ใช่ตัวประกอบของ 151
  5. เลื่อนไปที่จำนวนเฉพาะตัวถัดไปคือ 11 พบว่าหารไม่ลงตัว ดังนั้น 11 ไม่ใช่ตัวประกอบของ 151
  6. เมื่อเลื่อนไปที่จำนวนเฉพาะตัวถัดไปจาก 11 คือ 13 จะพบว่าไม่สามารถคิดต่อได้ เนื่องจาก 13 มีค่ามากกว่ารากที่สองของ 151 ซึ่งคือ 12.288
เพราะฉะนั้น ตัวประกอบของ 7399 คือ 7×7×151

ตัวอย่างที่2 : ให้จำนวนเต็มบวก n มีค่าเท่ากับ 491 สามารถแสดงขั้นตอนวิธีการทำได้ดังนี้

  1. ทดลองนำจำนวนเฉพาะ 2, 3,5...,19พบว่าไม่ใช่ตัวประกอบของn (หาร n ไม่ลงตัว)
  2. เมื่อเลื่อนไปที่จำนวนเฉพาะตัวถัดไปจาก 19 คือ 23 จะพบว่าไม่สามารถคิดต่อได้ เนื่องจาก 23 มีค่ามากกว่ารากที่สองของ 491 ซึ่งคือ 22.158
เพราะฉะนั้น 491 ไม่มีจำนวนเฉพาะใดๆเป็นตัวประกอบ 491 จึงเป็นจำนวนเฉพาะ

รหัสเทียม

def trial_division(n): """Return a list of the prime factors for a natural number.""" if n == 1: return [1] primes = prime_sieve(int(n**0.5) + 1) prime_factors = [] for p in primes: if p*p > n: break while n % p == 0: prime_factors.append(p) n //= p if n > 1: prime_factors.append(n) วิสุดา return prime_factors 

ประสิทธิภาพการทำงาน

ประสิทธิภาพเชิงเวลาของการหารเชิงทดลอง ในกรณีที่แย่ที่สุด คือ จำนวนเต็มที่ต้องการทดลองเป็นจำนวนเฉพาะ ในกรณีนี้จะใช้จำนวนเฉพาะตั้งแต่ 2 ถึง √n โดยต้องทำเป็นจำนวน 2√n / ln n ครั้ง ทำให้มีประสิทธิภาพเชิงเวลาเป็น O(√n / log n)

การใช้การหารเชิงทดลองเป็นวิธีที่รวดเร็วสำหรับการแยกตัวประกอบของจำนวนเต็มที่มีตัวประกอบน้อยๆ เนื่องจาก มีจำนวนเต็ม 50% ที่มี 2 เป็นตัวประกอบ, 33% ที่มี 3 เป็นตัวประกอบ, 88% ที่มีจำนวนเต็มที่มีค่าน้อยกว่า 100 เป็นตัวประกอบ และ 92% ที่มีจำนวนเต็มที่มีค่าน้อยกว่า 1000 เป็นตัวประกอบ ดังนั้นจึงคุ้มค่าที่จะเริ่มหาตัวประกอบจากจำนวนเฉพาะดังขั้นตอนวิธีนี้

การประยุกต์ใช้

การหารเชิงทดลองเป็นขั้นตอนวิธีที่ช่วยในการแยกตัวประกอบจำนวนเต็ม การหาตัวประกอบเฉพาะ และการหาตัวหารร่วมมาก

ดูเพิ่ม

ขั้นตอนวิธีที่เกี่ยวข้องกับการแยกตัวประกอบ อาทิ

อื่นๆ

ตัวอย่างการทำหารหารเชิงทดลองด้วนภาษาคอมพิวเตอร์ต่างๆ

  • ภาษาซี
  • ภาษาจาวา

อ้างอิง

  • Carl Pomerance, Richard E. Crandall (2000), "Prime numbers: a computational perspective", Department of Mathematics, Dartmouth College (PDF).
  • Cafiero, Franco., "Improving Trial Division: FIRST-DIGIT ANALYSIS", (PDF) http://math.arizona.edu/~ura-reports/022/McCallum_group/Cafiero.pdf Missing or empty |title= (help).

การหารเช, งทดลอง, งก, ามภาษา, ในบทความน, ไว, ให, านและผ, วมแก, ไขบทความศ, กษาเพ, มเต, มโดยสะดวก, เน, องจากว, เด, ยภาษาไทยย, งไม, บทความด, งกล, าว, กระน, ควรร, บสร, างเป, นบทความโดยเร, วท, งกฤษ, trial, division, เป, นข, นตอนว, ทำความเข, าใจได, าย, เน, องจากเป, . lingkkhamphasa inbthkhwamni miiwihphuxanaelaphurwmaekikhbthkhwamsuksaephimetimodysadwk enuxngcakwikiphiediyphasaithyyngimmibthkhwamdngklaw krann khwrribsrangepnbthkhwamodyerwthisudkarharechingthdlxng xngkvs trial division epnkhntxnwithithithakhwamekhaicidngay enuxngcakepnkhntxnwithithiichwithikaraebbbruthfxrs brute force ephuxchwyinkaraeyktwprakxbkhxngcanwnetm n odytrwcsxbwamicanwnechphaaidthimakkwa 1 aetnxykwa n thisamarthhar n idlngtw odywithinimkichkbkaraeyktwprakxbkhxngcanwnetmkhanxy enuxngcakprasiththiphaphechingewlakhxnkhangcha enuxha 1 khaxthibay 2 rhsethiym 3 prasiththiphaphkarthangan 4 karprayuktich 5 duephim 6 xun 7 xangxingkhaxthibay aekikhkarharechingthdlxngnn ichhlkkhxngkarhakhxbekhtlangaelakhxbekhtbn lower bound amp upper bound ekhamachwy kahndih canwnetm n s t aela s t eracathakartrwcsxbwami s n hmaythung s har n idlngtw sahrbcanwn s 2 n odykhxbekhtbn khux s n nn mithvsdidngnithvsdi twprakxbechphaakhxngcanwnetmid catxngmikhanxykwahruxethakbrakthisxngkhxngcanwnetmnnbthphisucn smmutiih s gt n dngnn t s gt n epnphlih n lt s t thaihkhdaeyngkbkhxethccring n s t ephraachann s Ntwxyangthi1 ihcanwnetmbwk n mikhaethakb 7399 samarthaesdngkhntxnwithikarthaiddngni thdlxngnacanwnechphaa 2 3 5 maharphbwa imichtwprakxbkhxng n har n imlngtw thdlxngnacanwnechphaa 7 phbwa 7 epntwprakxbkhxng n ody n 7 1057 caknnlxngna 7 maharsaxikkhrng phbwa 7 epntwprakxbkhxng 1057 thaih 1057 7 151 lxngna 7 maharxikkhrng phbwaharimlngtw dngnn 7 imichtwprakxbkhxng 151 eluxnipthicanwnechphaatwthdipkhux 11 phbwaharimlngtw dngnn 11 imichtwprakxbkhxng 151 emuxeluxnipthicanwnechphaatwthdipcak 11 khux 13 caphbwaimsamarthkhidtxid enuxngcak 13 mikhamakkwarakthisxngkhxng 151 sungkhux 12 288ephraachann twprakxbkhxng 7399 khux 7 7 151twxyangthi2 ihcanwnetmbwk n mikhaethakb 491 samarthaesdngkhntxnwithikarthaiddngni thdlxngnacanwnechphaa 2 3 5 19phbwaimichtwprakxbkhxngn har n imlngtw emuxeluxnipthicanwnechphaatwthdipcak 19 khux 23 caphbwaimsamarthkhidtxid enuxngcak 23 mikhamakkwarakthisxngkhxng 491 sungkhux 22 158ephraachann 491 immicanwnechphaaidepntwprakxb 491 cungepncanwnechphaarhsethiym aekikhdef trial division n Return a list of the prime factors for a natural number if n 1 return 1 primes prime sieve int n 0 5 1 prime factors for p in primes if p p gt n break while n p 0 prime factors append p n p if n gt 1 prime factors append n wisuda return prime factorsprasiththiphaphkarthangan aekikhprasiththiphaphechingewlakhxngkarharechingthdlxng inkrnithiaeythisud khux canwnetmthitxngkarthdlxngepncanwnechphaa inkrninicaichcanwnechphaatngaet 2 thung n odytxngthaepncanwn 2 n ln n khrng thaihmiprasiththiphaphechingewlaepn O n log n karichkarharechingthdlxngepnwithithirwderwsahrbkaraeyktwprakxbkhxngcanwnetmthimitwprakxbnxy enuxngcak micanwnetm 50 thimi 2 epntwprakxb 33 thimi 3 epntwprakxb 88 thimicanwnetmthimikhanxykwa 100 epntwprakxb aela 92 thimicanwnetmthimikhanxykwa 1000 epntwprakxb dngnncungkhumkhathicaerimhatwprakxbcakcanwnechphaadngkhntxnwithinikarprayuktich aekikhkarharechingthdlxngepnkhntxnwithithichwyinkaraeyktwprakxbcanwnetm karhatwprakxbechphaa aelakarhatwharrwmmakduephim aekikhkhntxnwithithiekiywkhxngkbkaraeyktwprakxb xathi khntxnwithikhxngchxr khntxnwithiorhkhxngphxllard taaekrngkhxngexrathxsethnis karaeyktwprakxbaebbxxyelxrxun aekikhtwxyangkarthaharharechingthdlxngdwnphasakhxmphiwetxrtang phasasi phasacawaxangxing aekikhCarl Pomerance Richard E Crandall 2000 Prime numbers a computational perspective Department of Mathematics Dartmouth College PDF Cafiero Franco Improving Trial Division FIRST DIGIT ANALYSIS PDF http math arizona edu ura reports 022 McCallum group Cafiero pdf Missing or empty title help ekhathungcak https th wikipedia org w index php title karharechingthdlxng amp oldid 9234795, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม