2024年1月11日 星期四

i025. 真因數和 (小 n)

         沒有太過分的求因數,小心避開當輸入為1、找因數的迴圈終點記得開根號處理,很多神奇的技巧如6n+1,6n-1,找因數的時候一次間隔兩個數....技巧都不需用上。

        以下附上完整程式碼:

def t():
    n = int(input())
    if n == 1:
        print(0)
        return
    p = int(n**0.5) + 1
    
    total = 0
    for i in range(1,p):
        if n % i == 0:
            j = n//i
            if j == i or j == n:
                total += i
            else:
                total += i + j
    print(total)
    
t()

沒有留言:

張貼留言

h206. 強者就是要戰,但......什麼才是強者呢?

         這題是很好的遞迴問題,每次遞迴的時候都要帶入此次遞迴的左右邊界、及這次是要取區間最大還是取區間最小的flag。         完整程式如下: def t (l , r , isBig) : if l == r -1 : retur...