สมมติว่าเรามีตัวเลข n มากกว่า 1 เราต้องหาตัวประกอบเฉพาะของมันทั้งหมดแล้วส่งคืนในลำดับการจัดเรียง เราสามารถเขียนตัวเลขเป็นผลคูณของจำนวนเฉพาะได้ พวกมันคือตัวประกอบเฉพาะของมัน และปัจจัยเฉพาะเดียวกันอาจเกิดขึ้นมากกว่าหนึ่งครั้ง
ดังนั้นหากอินพุตเท่ากับ 42 เอาต์พุตจะเป็น [2, 3, 7]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- res:=รายการใหม่
- ในขณะที่ n mod 2 เหมือนกับ 0, do
- แทรก 2 ที่ส่วนท้ายของ res
- n :=ผลหารของ n/2
- สำหรับฉันในช่วง 3 ถึง (รากที่สองของ n) เพิ่มขึ้นในขั้นตอนที่ 2
- ในขณะที่ n mod i เหมือนกับ 0, do
- ใส่ i ต่อท้าย res
- n :=ผลหารของ n/i
- ในขณะที่ n mod i เหมือนกับ 0, do
- ถ้า n> 2 แล้ว
- ใส่ n ต่อท้าย res
- ผลตอบแทน
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, n): res=[] while n%2==0: res.append(2) n//=2 for i in range(3,int(n**.5)+1,2): while n%i==0: res.append(i) n//=i if n>2: res.append(n) return res ob = Solution() print(ob.solve(42))
อินพุต
42
ผลลัพธ์
[2, 3, 7]