Python程式:查詢N的四個因數,使其乘積最大且和等於N - 集2
假設我們有一個數字N,我們需要找到N的所有因數,並返回N的四個因數的乘積,滿足以下條件:四個因數的和等於N。四個因數的乘積最大。所有四個因數可以相等,以使乘積最大化。
因此,如果輸入為N = 60,則輸出將為所有因數 -> 1 2 3 4 5 6 10 12 15 20 30 60,乘積為50625,因為我們選擇了15四次以使乘積最大。
為了解決這個問題,我們將遵循以下步驟:
factors := 新列表
對於範圍從1到整數(平方根(n))+1的i,執行:
如果n mod i等於0,則:
將i插入factors列表的末尾
將整數(n / i)插入factors列表的末尾
對列表factors進行排序
顯示factors
final_prod := 1, flag := 1
對於範圍從0到factors大小的i,執行:
對於範圍從i到factors大小的j,執行:
對於範圍從j到factors大小的k,執行:
y := n - factors[i] - factors[j] - factors[k]
如果y <= 0,則:
退出迴圈
如果n mod y等於0,則:
flag := 0
final_prod := factors[i] * factors[j] * factors[k] * y 與 final_prod 的最大值
如果flag等於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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP