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

给定一个数字n,任务是找到奇数因子和。 例如:

null
Input : n = 30Output : 24Odd dividers sum 1 + 3 + 5 + 15 = 24 Input : 18Output : 13Odd 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是唯一的偶数素数。

C++

// Formula based Java program
// to find sum of all divisors
// of n.
#include <iostream>
#include <cmath>
using namespace std;
// Returns sum of all
// factors of n.
int sumofoddFactors( int n)
{
// Traversing through
// all prime factors.
int res = 1;
// ignore even factors by
// removing all powers
// of 2
while (n % 2 == 0)
n = n / 2;
for ( int i = 3;
i <= sqrt (n); i++)
{
// While i divides n,
// print i and divide n
int count = 0, curr_sum = 1;
int curr_term = 1;
while (n % i == 0)
{
count++;
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
int main()
{
int n = 30;
cout << sumofoddFactors(n);
return 0;
}
// This code is contributed by
// Manish Shaw(manishshaw1)


JAVA

// Formula based Java program
// to find sum of all divisors
// of n.
import java.io.*;
import java.math.*;
class GFG {
// Returns sum of all
// factors of n.
static int sumofoddFactors( int n)
{
// Traversing through
// all prime factors.
int res = 1 ;
// ignore even factors by
// removing all powers
// of 2
while (n % 2 == 0 )
n = n / 2 ;
for ( int i = 3 ; i <= Math.sqrt(n); i++)
{
// While i divides n, print i
// and divide n
int count = 0 , curr_sum = 1 ;
int curr_term = 1 ;
while (n % i == 0 )
{
count++;
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
public static void main(String args[])
throws IOException
{
int n = 30 ;
System.out.println(sumofoddFactors(n));
}
}
/* This code is contributed by Nikita Tiwari.*/


Python3

# Formula based Python 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
# removing all powers
# of 2
while (n % 2 = = 0 ) :
n = int (n / 2 )
for i in range ( 3 , int (math.sqrt(n)) + 1 ) :
# While i divides n,
# pri and divide n
count = 0
curr_sum = 1
curr_term = 1
while (n % i = = 0 ) :
count = count + 1
n = int (n / i)
curr_term * = i
curr_sum = curr_sum + curr_term
res = res * curr_sum
# This condition is to
# handle the case when
# n is a prime number.
if (n > = 2 ) :
res = res * ( 1 + n)
return res
# Driver code
n = 30
print (sumofoddFactors(n))
# This code is contributed by
# Manish Shaw(manishshaw1)


C#

// Formula based C# program to find sum
// of all divisors of n.
using System;
class GFG {
// Returns sum of all factors of n.
static int sumofoddFactors( int n)
{
// Traversing through
// all prime factors.
int res = 1;
// ignore even factors by
// removing all powers
// of 2
while (n % 2 == 0)
n = n / 2;
for ( int i = 3; i <= Math.Sqrt(n); i++)
{
// While i divides n, print i
// and divide n
int count = 0, curr_sum = 1;
int curr_term = 1;
while (n % i == 0)
{
count++;
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
public static void Main()
{
int n = 30;
Console.Write(sumofoddFactors(n));
}
}
// This code is contributed by nitin mittal.


PHP

<?php
// Formula based PHP program
// to find sum of all divisors
// of n.
// Returns sum of all
// factors of n.
function sumofoddFactors( $n )
{
// Traversing through
// all prime factors.
$res = 1;
// ignore even factors by
// removing all powers
// of 2
while ( $n % 2 == 0)
$n = intval ( $n / 2);
for ( $i = 3;
$i <= sqrt( $n ); $i ++)
{
// While i divides n,
// pr$i and divide n
$count = 0;
$curr_sum = 1;
$curr_term = 1;
while ( $n % $i == 0)
{
$count ++;
$n = intval ( $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;
echo (sumofoddFactors( $n ));
// This code is contributed by
// Manish Shaw(manishshaw1)
?>


Javascript

<script>
// Formula based Javascript program
// to find sum of all divisors
// of n.
// Returns sum of all
// factors of n.
function sumofoddFactors(n)
{
// Traversing through
// all prime factors.
let res = 1;
// ignore even factors by
// removing all powers
// of 2
while (n % 2 == 0)
n = n / 2;
for (let i = 3; i <= n; i++)
{
// While i divides n,
// print i and divide n
let count = 0, curr_sum = 1;
let curr_term = 1;
while (n % i == 0)
{
count++;
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;
}
let n = 30;
document.write(sumofoddFactors(n));
</script>


输出:

24

请参阅完整的文章 求一个数的奇数因子之和 更多细节!

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享