[英]How to compare numbers for highest number of prime factors in Python?
我必須編寫代碼才能在輸入時獲得 10 個數字。 然后,找出質因數較多的數。 如果兩個數具有相同數量的質因數,則打印較大的一個。
例如,對於示例輸入: 輸入值:
123
43
54
12
76
84
98
678
543
231
Output 值應該是這樣的:
678 3
這是我的代碼,但是 output 不正確:
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)
使用此答案中的算法,我寫了一個算法來解決您的問題。
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.