簡體   English   中英

如何比較 Python 中素數最多的數字?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM