阿摩線上測驗 登入

申論題資訊

試卷:112年 - 112 公務升官等考試_薦任_統計:資料處理#117273
科目:資料處理
年份:112年
排序:0

申論題內容

一、請寫一個非遞迴呼叫的程式,輸出一個正整數是由那些最小因子(質數)的乘積所構成。例如,120 是由 2 * 2 * 2 * 3 * 5 這些質數所構成。程式輸入 120,然後程式輸出 2 * 2 * 2 * 3 * 5。(20 分)

詳解 (共 1 筆)

詳解 提供者:hchungw
python
        
def prime_factors(n):
    factors = []
    divisor = 2
    while n >= divisor:
        while n % divisor == 0:
            factors.append(divisor)
            n //= divisor
        divisor += 1
    return factors
def main():
    number = int(input("請輸入一個正整數: "))
    factors = prime_factors(number)
    print(" * ".join(map(str, factors)))
if __name__ == "__main__":
    main()
說明
prime_factors函數:
使用一個 while 迴圈來遍歷可能的質因子,從2開始。
當 n 可以被當前的質因子整除時,將該質因子加入 factors 列表,並將 n 除以該質因子。
不斷增加質因子值,直到 n 被完全分解。
main函數:
提示用戶輸入一個正整數。
調用 prime_factors 函數來獲取所有的質因子,並將它們以 * 分隔的形式輸出。