Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

หาตัวประกอบของ N สี่ตัวที่มีผลคูณสูงสุดและผลรวมเท่ากับ N - Set-2 ใน Python Program


สมมติว่าเรามีตัวเลข N เราต้องหาตัวประกอบทั้งหมดของ N และส่งคืนผลคูณของตัวประกอบสี่ตัวของ N ว่า:ผลรวมของปัจจัยสี่ตัวเท่ากับ N ผลคูณของปัจจัยสี่ตัวมีค่าสูงสุด ปัจจัยทั้งสี่สามารถมีค่าเท่ากันเพื่อเพิ่มผลผลิตให้สูงสุด

ดังนั้นหากอินพุตเป็น N =60 ผลลัพธ์จะเป็น ปัจจัยทั้งหมดคือ -> 1 2 3 4 5 6 10 12 15 20 30 60 และผลิตภัณฑ์คือ 50625 เนื่องจากเรา 15 ได้รับการคัดเลือกสี่ครั้งเพื่อสร้างผลิตภัณฑ์ ใหญ่ที่สุด

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ปัจจัย :=รายการใหม่

  • สำหรับฉันอยู่ในช่วง 1 ถึงจำนวนเต็มของ (รากที่สองของ n) + 1 ทำ

    • ถ้า n mod i เหมือนกับ 0 แล้ว

      • ใส่ i ต่อท้ายตัวประกอบ

      • ใส่จำนวนเต็มของ (n / i) ที่ส่วนท้ายของตัวประกอบ

  • เรียงลำดับปัจจัยรายการ

  • ปัจจัยแสดงผล

  • final_prod :=1 แฟล็ก :=1

  • สำหรับฉันอยู่ในช่วง 0 ถึงขนาดของปัจจัย ทำ

    • สำหรับ j ในช่วง i ถึงขนาดของปัจจัย ทำ

      • สำหรับ k ในช่วง j ถึงขนาดของตัวประกอบ ทำ

        • y :=n - ปัจจัย[i] - ปัจจัย[j] - ปัจจัย[k]

        • ถ้า y <=0 แล้ว

          • ออกจากวง

        • ถ้า n mod y เหมือนกับ 0 แล้ว

          • ธง :=0

  • final_prod :=สูงสุดของปัจจัย[i] * ปัจจัย[j] * ปัจจัย[k] * y, final_prod

  • ถ้าแฟล็กเหมือนกับ 0 แล้ว

    • แสดง final_prod

  • มิฉะนั้น

    • แสดง "เป็นไปไม่ได้"

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

from math import *
def get_factors(n) :
   factors = []
   for i in range(1, int(sqrt(n)) + 1) :
      if n % i == 0 :
         factors.append(i)
         factors.append(n // i)
   factors.sort()
   print("Factors are ", factors)
   final_prod = 1
   flag = 1
   for i in range(0, len(factors)) :
      for j in range(i, len(factors)) :
         for k in range(j, len(factors)) :
            y = n - factors[i] - factors[j] - factors[k]
            if y <= 0 :
               break
            if n % y == 0 :
               flag = 0
               final_prod = max(factors[i] * factors[j] * factors[k] * y , final_prod)
   if flag == 0 :
      print("Product is", final_prod)
   else :
      print("Not possible")

n = 60
get_factors(n)

อินพุต

60

ผลลัพธ์

Factors are [1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60] Product is 50625