求一个数的奇数因子和的Python程序

给定一个数字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
喜欢就支持一下吧
点赞10 分享