Рубрики

Капрекар Константа

6174 — это Капрекарская Константа. Этот номер является особенным, так как мы всегда получаем его, когда выполняются следующие шаги для любых четырехзначных чисел, так что все цифры числа не совпадают, т. Е. Все четырехзначные числа, кроме (0000, 1111,…)

  1. Сортируйте четыре цифры в порядке возрастания и сохраните результат в виде числа «asc».
  2. Сортируйте четыре цифры в порядке убывания и сохраните результат в число «desc».
  3. Вычтите число большее число из меньшего числа, то есть abs (asc — desc).
  4. Повторите выше три шага, пока результат вычитания не станет равным предыдущему числу.

Мы всегда заканчиваем с 6174.

Ниже приводится программа для демонстрации того же.

C ++

// C ++ программа для демонстрации работы
// постоянная Капрекара
#include<bits/stdc++.h>

using namespace std;

  
// Эта функция проверяет действительность капрекара
// константа Возвращает постоянную Капрекара для
// любое четырехзначное число "n" такое, что все цифры
// из n не одинаковы.

int kaprekarRec(int n, int &prev)

{

    if (n == 0)

       return 0;

  

    // Сохраняем текущий n как предыдущий номер

    prev = n;

  

    // Получить четыре цифры данного номера

    int digits[4];

    for (int i=0; i<4; i++)

    {

       digits[i] = n%10;

       n = n/10;

    }

  

    // Сортировка всех четырех цифр в порядке возрастания

    // и giet в виде числа "asc"

    sort(digits, digits+4);

    int asc = 0;

    for (int i=0; i<4; i++)

       asc = asc*10 + digits[i];

  

    // Получить все четыре цифры в порядке убывания

    // в виде числа "desc"

    sort(digits, digits+4, std::greater<int> ());

    int desc = 0;

    for (int i=0; i<4; i++)

       desc = desc*10 + digits[i];

  

    // Получить разницу двух чисел

    int diff = abs(asc - desc);

  

    // Если разница такая же, как и предыдущая, имеем

    // достиг константы капрекара

    if (diff == prev)

        return diff;

  

    // Остальное повторяется

    return kaprekarRec(diff, prev);

}

  
// Оболочка над kaprekarRec ()

int kaprekar(int n)

{

    int prev = 0;

    return kaprekarRec(n, prev);

}

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

int main()

{

    // Пробуя несколько четырехзначных чисел, мы

    // всегда получаем 6174

    cout << kaprekar(1000) << endl;

    cout << kaprekar(1112) << endl;

    cout << kaprekar(9812) << endl;

    return 0;

}

Джава

// Java-программа для демонстрации работы
// постоянная Капрекара

import java.util.Arrays;

  

class GFG{

// Эта функция проверяет действительность капрекара
// константа Возвращает постоянную Капрекара для
// любое четырехзначное число "n" такое, что все цифры
// из n не одинаковы.

static int kaprekarRec(int n, int prev) 

    if (n == 0

    return 0

  

    // Сохраняем текущий n как предыдущий номер

    prev = n; 

  

    // Получить четыре цифры данного номера

    int[] digits=new int[4]; 

    for (int i=0; i<4; i++) 

    

    digits[i] = n%10

    n = n/10

    

  

    // Сортировка всех четырех цифр в порядке возрастания

    // и giet в виде числа "asc"

    Arrays.sort(digits);

    int asc = 0

    for (int i=0; i<4; i++) 

    asc = asc*10 + digits[i]; 

  

    // Получить все четыре цифры в порядке убывания

    // в виде числа "desc"

    Arrays.sort(digits); 

    int desc = 0

    for (int i=3; i>=0; i--) 

    desc = desc*10 + digits[i]; 

  

    // Получить разницу двух чисел

    int diff = Math.abs(asc - desc); 

  

    // Если разница такая же, как и предыдущая, имеем

    // достиг константы капрекара

    if (diff == prev) 

        return diff; 

  

    // Остальное повторяется

    return kaprekarRec(diff, prev); 

  
// Оболочка над kaprekarRec ()

static int kaprekar(int n) 

    int prev = 0

    return kaprekarRec(n, prev); 

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

public static void main(String[] args) 

    // Пробуя несколько четырехзначных чисел, мы

    // всегда получаем 6174

    System.out.println(kaprekar(1000)); 

    System.out.println(kaprekar(1112)); 

    System.out.println(kaprekar(9812)); 


}
// Этот код предоставлен mits

python3

# Python3 программа для демонстрации
# работа постоянной Капрекара

  
# Эта функция проверяет правильность
константа # капрекара. Возвращается
Константа Капрекара для любых четырех
номер цифры "n" такой, что все
# цифры не совпадают.

def kaprekarRec(n, prev): 

  

    if (n == 0):

        return 0

  

    # Сохранить текущий n как предыдущий

    # число

    prev = n; 

  

    # Получить четыре цифры данного номера

    digits = [0] * 4

    for i in range(4):

        digits[i] = n % 10;

        n = int(n / 10); 

  

    # Сортировка всех четырех цифр в порядке возрастания

    # И Гиет в виде числа "asc"

    digits.sort(); 

    asc = 0

    for i in range(4):

        asc = asc * 10 + digits[i]; 

  

    # Получить все четыре цифры в порядке убывания

    # в виде числа "desc"

    digits.sort(); 

    desc = 0

    for i in range(3, -1, -1):

        desc = desc * 10 + digits[i]; 

  

    # Получите разницу двух чисел

    diff = abs(asc - desc); 

  

    # Если разница такая же, как предыдущая,

    # мы достигли константы капрекара

    if (diff == prev): 

        return diff; 

  

    # Остальное повторяется

    return kaprekarRec(diff, prev); 

  
# Обёртка над kaprekarRec ()

def kaprekar(n): 

  

    rev = 0

    return kaprekarRec(n, rev); 

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

  
# Попробуем несколько четырехзначных чисел,
# мы всегда получаем 6174

print(kaprekar(1000)); 

print(kaprekar(1112)); 

print(kaprekar(9812));

  
# Этот код предоставлен mits.

C #

// C # программа для демонстрации работы
// постоянная Капрекара

using System;

  

class GFG{

// Эта функция проверяет действительность капрекара
// константа Возвращает постоянную Капрекара для
// любое четырехзначное число "n" такое, что все цифры
// из n не одинаковы.

static int kaprekarRec(int n, int prev) 

    if (n == 0) 

    return 0; 

  

    // Сохраняем текущий n как предыдущий номер

    prev = n; 

  

    // Получить четыре цифры данного номера

    int[] digits=new int[4]; 

    for (int i=0; i<4; i++) 

    

    digits[i] = n%10; 

    n = n/10; 

    

  

    // Сортировка всех четырех цифр в порядке возрастания

    // и giet в виде числа "asc"

    Array.Sort(digits);

    int asc = 0; 

    for (int i=0; i<4; i++) 

    asc = asc*10 + digits[i]; 

  

    // Получить все четыре цифры в порядке убывания

    // в виде числа "desc"

    Array.Sort(digits); 

    int desc = 0; 

    for (int i=3; i>=0; i--) 

    desc = desc*10 + digits[i]; 

  

    // Получить разницу двух чисел

    int diff = Math.Abs(asc - desc); 

  

    // Если разница такая же, как и предыдущая, имеем

    // достиг константы капрекара

    if (diff == prev) 

        return diff; 

  

    // Остальное повторяется

    return kaprekarRec(diff, prev); 

  
// Оболочка над kaprekarRec ()

static int kaprekar(int n) 

    int prev = 0; 

    return kaprekarRec(n, prev); 

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

public static void Main() 

    // Пробуя несколько четырехзначных чисел, мы

    // всегда получаем 6174

    System.Console.WriteLine(kaprekar(1000)); 

    System.Console.WriteLine(kaprekar(1112)); 

    System.Console.WriteLine(kaprekar(9812)); 


}
// Этот код предоставлен mits

PHP

<?php
// PHP программа для демонстрации работы
// постоянная Капрекара

  
// Эта функция проверяет действительность капрекара
// константа Возвращает константу капрекара
// для любого четырехзначного числа "n" такого, что
// все цифры n не совпадают.

function kaprekarRec($n, $prev

    if ($n == 0) 

    return 0; 

  

    // Сохраняем текущий n как предыдущий номер

    $prev = $n

  

    // Получить четыре цифры данного номера

    $digits = array_fill(0, 4, 0); 

    for ($i = 0; $i < 4; $i++) 

    

        $digits[$i] = $n % 10; 

        $n = (int)($n / 10); 

    

  

    // Сортировка всех четырех цифр в порядке возрастания

    // и giet в виде числа "asc"

    sort($digits); 

    $asc = 0; 

    for ($i = 0; $i < 4; $i++) 

    $asc = $asc * 10 + $digits[$i]; 

  

    // Получить все четыре цифры в порядке убывания

    // в виде числа "desc"

    rsort($digits); 

    $desc = 0; 

    for ($i = 0; $i < 4; $i++) 

    $desc = $desc * 10 + $digits[$i]; 

  

    // Получить разницу двух чисел

    $diff = abs($asc - $desc); 

  

    // Если разница такая же, как и предыдущая,

    // мы достигли константы капрекара

    if ($diff == $prev

        return $diff

  

    // Остальное повторяется

    return kaprekarRec($diff, $prev); 

  
// Оболочка над kaprekarRec ()

function kaprekar($n

    $rev = 0; 

    return kaprekarRec($n, $rev); 

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

  
// Пробуя несколько четырехзначных чисел, мы
// всегда получаем 6174

echo kaprekar(1000) . "\n"

echo kaprekar(1112) . "\n"

echo kaprekar(9812) . "\n";

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


Выход :

6174
6174
6174

Иллюстрация:

n = 2324
1) asc  = 2234
2) desc = 4322
3) Difference = 2088 
4) Repeating above steps as difference is not same
as n

n = 2088
1) asc  = 0288
2) desc = 8820
3) Difference = 8532  
4) Repeating above steps as difference is not same
as n.

n = 8532
1) asc  = 2358
2) desc = 8532
3) Difference = 6174  
4) Repeating above steps as difference is not same
as n.

n = 6174
1) asc  = 1467
2) desc = 7641
3) Difference = 6174  
Stopping here as difference is same as n.

Ссылка:
https://en.wikipedia.org/wiki/6174_(number)

Связанная статья:
Капрекарский номер

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

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

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

Капрекар Константа

0.00 (0%) 0 votes