Рубрики

Сумма всех собственных делителей натурального числа

Учитывая натуральное число, вычислите сумму всех его правильных делителей. Правильный делитель натурального числа — это делитель, который строго меньше числа.

Например, число 20 имеет 5 собственных делителей: 1, 2, 4, 5, 10, а делитель суммирования является: 1 + 2 + 4 + 5 + 10 = 22.

Примеры :

Input : num = 10
Output: 8
// proper divisors 1 + 2 + 5 = 8 

Input : num = 36
Output: 55
// proper divisors 1 + 2 + 3 + 4 + 6 + 9 + 12 + 18 = 55 

Эта проблема имеет очень простое решение , мы все знаем, что для любого числа 'num' все его делители всегда меньше и равны 'num / 2', а все простые множители всегда меньше и равны sqrt (num) . Таким образом, мы перебираем «i» до тех пор, пока i <= sqrt (num), и для любого «i», если оно делит «num», мы получаем два делителя «i» и «num / i», непрерывно добавляем эти делители, но для некоторых делители чисел 'i' и 'num / i' в этом случае будут одинаковыми, просто добавьте только один делитель, например; num = 36, поэтому для i = 6 мы получим (num / i) = 6, поэтому мы будем в сумме 6 только один раз. Наконец, мы добавляем единицу, поскольку один является делителем всех натуральных чисел.

C ++

// C ++ программа для поиска суммы всех делителей
// натуральное число
#include<bits/stdc++.h>

using namespace std;

  
// Функция для вычисления суммы всех собственных делителей
// num -> заданное натуральное число

int divSum(int num)

{

    // Конечный результат суммирования делителей

    int result = 0;

  

    // найти все делители, которые делят 'num'

    for (int i=2; i<=sqrt(num); i++)

    {

        // если 'i' является делителем 'num'

        if (num%i==0)

        {

            // если оба делителя одинаковы, добавить

            // это только один раз добавить оба

            if (i==(num/i))

                result += i;

            else

                result += (i + num/i);

        }

    }

  

    // Добавить 1 к результату, так как 1 также является делителем

    return (result + 1);

}

  
// Драйвер программы для запуска дела

int main()

{

    int num = 36;

    cout << divSum(num);

    return 0;

}

Джава

// JAVA-программа для поиска суммы всех делителей
// натурального числа

import java.math.*;

  

class GFG {

      

    // Функция для вычисления суммы всех собственных

    // делители num -> заданное натуральное число

    static int divSum(int num)

    {

        // Конечный результат суммирования делителей

        int result = 0;

       

        // найти все делители, которые делят 'num'

        for (int i = 2; i <= Math.sqrt(num); i++)

        {

            // если 'i' является делителем 'num'

            if (num % i == 0)

            {

                // если оба делителя одинаковы

                // добавить его только один раз, добавить оба

                if (i == (num / i))

                    result += i;

                else

                    result += (i + num / i);

            }

        }

       

        // Добавить 1 к результату, так как 1 также

        // делитель

        return (result + 1);

    }

       

    // Драйвер программы для запуска дела

    public static void main(String[] args)

    {

        int num = 36;

        System.out.println(divSum(num));

    }

}

  
/ * Этот код предоставлен Никитой Тивари * /

питон

# Программа PYTHON, чтобы найти сумму всех
# делители натурального числа

import math

      
# Функция для расчета суммы всех собственных
# делителей num -> заданное натуральное число

def divSum(num) :

      

    # Конечный результат суммирования делителей

    result = 0

      

    # найти все делители, которые делят 'num'

    i = 2

    while i<= (math.sqrt(num)) :

        

        # если 'i' является делителем 'num'

        if (num % i == 0) :

        

            # если оба делителя одинаковы

            # добавить его только один раз, добавить оба

            if (i == (num / i)) :

                result = result + i;

            else :

                result = result +  (i + num/i);

        i = i + 1

          

    # Добавьте 1 к результату, так как 1 также

    # делитель

    return (result + 1);

   
# Драйвер программы для запуска дела

num = 36

print (divSum(num))

  
# Этот код предоставлен Никитой Тивари

C #

// C # программа для поиска суммы всех
// делители натурального числа

using System;

  

class GFG {

      

    // Функция для вычисления суммы всех собственных

    // делители num -> заданное натуральное число

    static int divSum(int num)

    {

          

        // Конечный результат суммирования делителей

        int result = 0;

      

        // найти все делители, которые делят 'num'

        for (int i = 2; i <= Math.Sqrt(num); i++)

        {

              

            // если 'i' является делителем 'num'

            if (num % i == 0)

            {

                  

                // если оба делителя одинаковы

                // добавить его только один раз, добавить оба

                if (i == (num / i))

                    result += i;

                else

                    result += (i + num / i);

            }

        }

      

        // Добавить 1 к результату как 1

        // тоже делитель

        return (result + 1);

    }

      

    // Код драйвера

    public static void Main()

    {

        int num = 36;

        Console.Write(divSum(num));

    }

}

  
// Этот код предоставлен Нитином Митталом.

PHP

<?php
// PHP программа для поиска суммы
// все делители натурального числа

  
// Функция для вычисления суммы
// все правильные делители
// num -> заданное натуральное число

function divSum($num)

{

    // Конечный результат

    // суммирование делителей

    $result = 0;

  

    // найти все делители

    // который делит 'num'

    for ($i = 2; $i <= sqrt($num); 

                 $i++)

    {

        // если 'i' является делителем 'num'

        if ($num % $i == 0)

        {

            // если оба делителя

            // то же самое, затем добавить только

            // еще раз добавить оба

            if ($i == ($num / $i))

                $result += $i;

            else

                $result += ($i + $num / $i);

        }

    }

  

    // Добавить 1 к результату как

    // 1 тоже делитель

    return ($result + 1);

}

  
// Код драйвера

$num = 36;

echo(divSum($num));

  
// Этот код предоставлен Ajit.
?>


Выход :

55

Пожалуйста, обратитесь к посту ниже для оптимизированного решения и формулы.
Эффективное решение для суммы всех факторов ряда

Эта статья предоставлена Шашанком Мишрой (Гуллу) . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Сумма всех собственных делителей натурального числа

0.00 (0%) 0 votes