给定一个数字n,任务是找到奇数因子和。
null
例如:
Input : n = 30 Output : 24 Odd dividers sum 1 + 3 + 5 + 15 = 24 Input : 18 Output : 13 Odd dividers sum 1 + 3 + 9 = 13
让p 1. P 2. ,…p K 是 主要因素 让我们 1. A. 2. , .. A. K 是p的最高权力 1. P 2. , .. P K 分别除以n,也就是说,我们可以把n写成 n=(p 1. A. 1. )*(p 2. A. 2. )*…(p K A. K ) .
Sum of divisors = (1 + p1 + p12 ... p1a1) * (1 + p2 + p22 ... p2a2) * ............................................. (1 + pk + pk2 ... pkak)
为了求奇数因子之和,我们只需要忽略偶数因子及其幂。例如,考虑n=18。它可以写成2 1. 3. 2. 所有因素中的太阳是(1)*(1+2)*(1+3+3) 2. ).奇数因子之和(1)*(1+3+3) 2. ) = 13.
为了去除所有偶数因子,我们反复地将n除以2。在这一步之后,我们只得到奇数因子。请注意,2是唯一的偶数素数。
Python3
# Formula based Python3 program # to find sum of all divisors # of n. import math # Returns sum of all factors # of n. def sumofoddFactors( n ): # Traversing through all # prime factors. res = 1 # ignore even factors by # of 2 while n % 2 = = 0 : n = n / / 2 for i in range ( 3 , int (math.sqrt(n) + 1 )): # While i divides n, print # i and divide n count = 0 curr_sum = 1 curr_term = 1 while n % i = = 0 : count + = 1 n = n / / i curr_term * = i curr_sum + = curr_term res * = curr_sum # This condition is to # handle the case when # n is a prime number. if n > = 2 : res * = ( 1 + n) return res # Driver code n = 30 print (sumofoddFactors(n)) # This code is contributed by "Sharad_Bhardwaj". |
输出:
24
请参阅完整的文章 求一个数的奇数因子之和 更多细节!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END