我必須撰寫一個代碼才能在輸入時獲得 10 個數字。然后,找到具有較多質因數的數。如果兩個數的素數相同,則列印較大的一個。
例如,對于 : 輸入值的樣本輸入:
123
43
54
12
76
84
98
678
543
231
輸出值應該是這樣的:
678 3
這是我的代碼,但是輸出不正確:
import math
# Below function will print the
# all prime factor of given number
def prime_factors(num):
# Using the while loop, we will print the number of two's that divide n
added1 = 0
added2 = 0
while num % 2 == 0:
added1 = 1
print(2, )
num = num / 2
for i in range(3, int(math.sqrt(num)) 1, 2):
# while i divides n , print i ad divide n
while num % i == 0:
added2 = 1
print(i, )
added2 = 1
num = num / i
if num > 2:
print(num)
added = added1 added2
print(added)
return added
# calling function
input_numbers = []
for i in range(0,10):
input_numbers.append(int(input()))
contest = 1
for item in input_numbers:
if prime_factors(item) > contest:
contest = 1
contest2 = item
print(contest2)
uj5u.com熱心網友回復:
使用這個答案中的演算法,我寫了一個來解決你的問題。
def prime_factors(n):
i = 2
factors = []
while i * i <= n:
if n % i:
i = 1
else:
n //= i
factors.append(i)
if n > 1:
factors.append(n)
return factors
input_numbers = []
for i in range(0,10):
input_numbers.append(int(input()))
highest_num = 0
highest_amount = 1
for num in input_numbers:
factors = list(dict.fromkeys(prime_factors(num)))
factors_amount = len(factors)
if factors_amount > highest_amount:
highest_num = num
highest_amount = factors_amount
elif factors_amount == highest_amount:
if num > highest_num:
highest_num = num
print(highest_num,highest_amount)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/429203.html
上一篇:PythonNp陣列
下一篇:格式化CSV檔案,將列拆分為行
