12 ส.ค. 2023 เวลา 16:51 • ไอที & แก็ดเจ็ต

หาตัวประกอบของจำนวนนับ ด้วย google sheet

สมัยประถม เราคงเคยหาตัวประกอบของจำนวนนับกันมาทุกคน
ตัวประกอบของจำนวนนับ a ก็คือจำนวนนับที่หาร a ลงตัว เช่น 6 มีตัวประกอบคือ 1, 2, 3 และ 6
วันนี้เราจะใช้ google sheet ช่วยหาตัวประกอบทั้งหมดของจำนวนนับกัน
สมมติว่าเรามีจำนวนนับที่ต้องการหาตัวประกอบทั้งหมดดังภาพ
ภาพที่ 1
เราจะเริ่มจากการหาเฉพาะตัวประกอบของ 15 ซึ่งเป็นจำนวนนับตัวแรกสุดที่เราต้องการหาก่อน
ในที่นี้จะมีการใช้ฟังก์ชัน LET ด้วย ซึ่งเคยเขียนอธิบายไปแล้ว เป็นบทความแรกเลย หากยังไม่รู้จัก สามารถย้อนกลับไปอ่านได้ที่
(รู้จักกับฟังก์ชัน LET https://www.blockdit.com/posts/64d3336e14c7621b2e97f701)
เราจะเริ่มจากกำหนดตัวแปรให้ 15 เป็นชื่อตัวแปรคือ a และแสดงผลเป็น a เฉย ๆ จะได้สูตรคือ
=LET(a,A2,a)
ภาพที่ 2
ถ้าไม่นับตัวมันเอง ตัวประกอบที่มากที่สุดที่เป็นไปได้ก็คือครึ่งหนึ่งของตัวมันเอง ดังนั้นเราจะหาจำนวนนั้น โดยตั้งชื่อตัวแปรเป็น n และให้แสดงผลเป็น n ได้สูตรว่า
=LET(a,A2,n,a/2,n)
ภาพที่ 3
แสดงจำนวนนับทั้งหมด (ยกเว้นตัวมันเอง) ที่สามารถเป็นตัวประกอบของ 15 โดยใช้สูตร SEQUENCE
(รู้จักกับฟังก์ชัน SEQUENCE https://www.blockdit.com/posts/64d5cf26ff0c4c23e0f507a8)
โดยจะเก็บชุดตัวเลขนี้เป็นตัวแปร num และให้สูตร LET แสดงผล num ได้สูตรเป็น
=LET(a,A2,n,a/2,num,SEQUENCE(n),num)
ภาพที่ 4
จากนั้นนำ num (จำนวนตั้งแต่ 1 ถึง 7) ไปหาร 15 แล้วดูว่าเหลือเศษเท่าไร โดยใช้ฟังก์ชัน MOD และปรับสูตรให้เป็น array ด้วย ได้สูตรเป็น
=LET(a,A2,n,a/2,num,SEQUENCE(n),INDEX(MOD(a,num)))
ภาพที่ 5
เราต้องการเฉพาะจำนวนที่นำไปหาร 15 แล้วเหลือเศษ 0 หรือหารลงตัว ดังนั้นตรวจสอบค่าความจริงเพิ่มเติม โดยเพิ่ม =0 ไปด้านท้าย ได้สูตรเป็น
=LET(a,A2,n,a/2,num,SEQUENCE(n),INDEX(MOD(a,num)=0))
ภาพที่ 6
จากนั้นใช้ฟังก์ชัน FILTER กรอง num ให้แสดงผลตามชุดค่าความจริงที่เราพึ่งสร้าง ได้สูตรคือ
=LET(a,A2,n,a/2,num,SEQUENCE(n),FILTER(num,INDEX(MOD(a,num)=0)))
ภาพที่ 7
ทำการเชื่อมจำนวนที่เป็นผลลัพธ์ทั้งหมดด้วยฟังก์ชัน JOIN โดยใช้ตัวเชื่อมเป็น ", " ได้สูตรเป็น
=LET(a,A2,n,a/2,num,SEQUENCE(n),JOIN(", ",FILTER(num,INDEX(MOD(a,num)=0))))
ภาพที่ 8
จากนั้นเพิ่มตัวมันเองเข้าไปด้านหลัง โดยการใส่ &", "&a ไปด้านท้าย ได้สูตรเป็น
=LET(a,A2,n,a/2,num,SEQUENCE(n),JOIN(", ",FILTER(num,INDEX(MOD(a,num)=0)))&", "&a)
ภาพที่ 9
เท่านี้เราก็ได้ตัวประกอบทั้งหมดของ 15 มาเขียนเรียงกัน โดยเริ่มจากข้อมูล 15 จากเซลล์ A2 ตัวเดียว
หากเราจะหาตัวประกอบของจำนวนนับอื่นด้านล่าง ก็คัดลอกสูตรลงมา หรือปรับสูตรที่เราได้ให้เป็น array โดยใช้ฟังก์ชัน MAP!!! ได้สูตรเป็น
=MAP(A2:A10,LAMBDA(a,LET(n,a/2,num,SEQUENCE(n),JOIN(", ",FILTER(num,INDEX(MOD(a,num)=0)))&", "&a)))
ภาพที่ 10
ถ้าเห็นว่าบทความนี้เป็นประโยชน์ ฝากแชร์เพื่อเป็นกำลังใจให้เราด้วยนะฮับ
โฆษณา