สมมติว่าเรามีตัวเลขสองตัว p และ q เราต้องตรวจสอบว่าผลรวมของตัวหารทั้งหมดของเลขพ่วงเหล่านี้เท่ากันหรือไม่
ดังนั้น หากอินพุตเป็น p =559, q =703 ผลลัพธ์จะเป็น True ตัวหารของ 559 คือ 1, 13, 43 และ 703 คือ 1, 19, 37 ผลรวมของตัวหารคือ 57พี>
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- กำหนดฟังก์ชัน divSum() นี่จะใช้เวลา n
- รวม :=1
- ผม :=2
- ในขณะที่ i * i <=n ทำ
- ถ้า n หารด้วย i ลงตัว
- ผลรวม :=รวม + ผม + พื้นของ (n / i)
- ผม :=ผม + 1
- ถ้า n หารด้วย i ลงตัว
- ผลตอบแทนรวม
- จากวิธีหลักคืนค่าจริงเมื่อ divSum(p) เหมือนกับ divSum(q) มิฉะนั้นจะเป็นเท็จ
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
โค้ดตัวอย่าง
from math import floor def divSum(n): total = 1 i = 2 while i * i <= n: if n % i == 0: total += i + floor(n / i) i += 1 return total def solve(p, q): return divSum(p) == divSum(q) p = 559 q = 703 print(solve(p, q))
อินพุต
559, 703
ผลลัพธ์
True