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

给定一个数字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 CPP program
// to find sum of all
// divisors of n.
#include <bits/stdc++.h>
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;
}


JAVA

// Formula based Java program
// to find sum of all
// divisors of n.
import java.io.*;
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) {
int n = 30 ;
System.out.println ( sumofoddFactors(n));
}
}
// This code is contributed by vt_m.


Python 3

# Formula based Python 3 program
# to find sum of all  divisors of n
# Returns sum of all factors of n
import math
def sumofoddFactors(n):
# Traversing through all prime factors
res = 1
# ignore even factors by
# removing all powers of 2
while (n % 2 ) = = 0 :
n = n / 2
i = 3
while i < = math.sqrt(n):
# 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 ( int (sumofoddFactors(n)))
# This code is contributed
# by Azkia Anam.


C#

// Formula based Java 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.WriteLine( sumofoddFactors(n));
}
}
// This code is contributed by vt_m.


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 = $n / 2;
for ( $i = 3; $i <= sqrt( $n ); $i ++)
{
// While i divides n, print
// i and divide n
$count = 0;
$curr_sum = 1 ;
$curr_term = 1;
while ( $n % $i == 0)
{
$count ++;
$n = (int) $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 Sach_Code
?>


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.
var res = 1;
// ignore even factors by
// removing all powers of
// 2
while (n % 2 == 0)
n = n / 2;
for ( var i = 3; i <= Math.sqrt(n); i++) {
// While i divides n, print
// i and divide n
var count = 0, curr_sum = 1;
var 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
var n = 30;
document.write(sumofoddFactors(n));
// This code is contributed by gauravrajput1
</script>


输出:

24

时间复杂性: O(n) 1/2 )

辅助空间: O(1) 请参阅完整的文章 求一个数的奇数因子之和 更多细节!

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