Рубрики

Счастливые числа

Счастливые числа являются подмножеством целых чисел. Вместо того, чтобы углубляться в теорию, давайте посмотрим на процесс получения счастливых чисел,

Взять набор целых чисел
1,2,3,4,5,6,7,8,9,10,11,12,14,15,16,17,18,19, ……

Во-первых, удаляя каждый второй номер, мы получаем следующий сокращенный набор.
1,3,5,7,9,11,13,15,17,19, …………

Теперь, удалив каждый третий номер, мы получим
1, 3, 7, 9, 13, 15, 19,….….

Продолжайте этот процесс до бесконечности ……
Любое число, которое НЕ удаляется из-за вышеописанного процесса, называется «счастливым».

Поэтому набор счастливых чисел равен 1, 3, 7, 13, ………

Теперь, учитывая целое число «n», напишите функцию, чтобы сказать, является ли это число счастливым или нет.

    bool isLucky(int n)

Алгоритм:
Перед каждой итерацией, если мы рассчитываем положение данного no, то в данной итерации мы можем определить, будет ли no удалено. Предположим, рассчитанная позиция для данного нет. это P перед некоторой итерацией, а каждый Ith нет. будет удален в этой итерации, если P <I, то ввод no удачен, если P таков, что P% I == 0 (I — делитель P), то ввод no не удачен.

Рекурсивный путь:

C ++

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

using namespace std;

#define bool int 

  
/ * Возвращает 1, если n - счастливое нет.
в противном случае возвращает 0 * /

bool isLucky(int n) 

    static int counter = 2; 

      

    / * переменная next_position предназначена только для

    удобочитаемость программы мы можем

    удали его и используй только * /

    int next_position = n; 

    if(counter > n) 

        return 1; 

    if(n % counter == 0) 

        return 0; 

      

    / * рассчитать следующую позицию ввода нет * /

    next_position -= next_position / counter; 

      

    counter++; 

    return isLucky(next_position); 

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

int main() 

    int x = 5; 

    if( isLucky(x) ) 

        cout << x << " is a lucky no."

    else

        cout << x << " is not a lucky no."

  
// Этот код добавлен
// ратбхупендра

С

#include <stdio.h>
#define bool int

  
/ * Возвращает 1, если n - счастливое нет. в обратном порядке возвращает 0 * /

bool isLucky(int n)

{

    static int counter = 2;

      

    / * переменная next_position предназначена только для удобства чтения

        программу мы можем удалить и использовать только * /

    int next_position = n;

    if(counter > n)

        return 1;

    if(n%counter == 0)

        return 0;     

      

    / * рассчитать следующую позицию ввода нет * /

    next_position -= next_position/counter;

      

    counter++;

    return isLucky(next_position);

}

  
/ * Функция драйвера для проверки вышеуказанной функции * /

int main()

{

    int x = 5;

    if( isLucky(x) )

        printf("%d is a lucky no.", x);

    else

        printf("%d is not a lucky no.", x);

    getchar();

}

Джава

// Java-программа для проверки Lucky Number

import java.io.*;

  

class GFG 

{

    public static int counter = 2;    

  

    // Возвращает 1, если n счастливчик в противном случае возвращает 0

    static boolean isLucky(int n)

    {

        // переменная next_position предназначена только для чтения

        // программу мы можем удалить и использовать только

        int next_position = n;

        if(counter > n)

            return true;

        if(n%counter == 0)

            return false;      

   

        // вычисляем следующую позицию ввода no

        next_position -= next_position/counter;

     

        counter++;

        return isLucky(next_position);

    }

      

    // драйверная программа

    public static void main (String[] args) 

    {

        int x = 5;

        if( isLucky(x) )

            System.out.println(x+" is a lucky no.");

        else

            System.out.println(x+" is not a lucky no.");

    }

}

  
// Предоставлено Прамод Кумар

питон

# Программа Python для проверки счастливого номера

  
# Возвращает 1, если n - счастливое число, в противном случае возвращает 0

def isLucky(n):

    # Атрибут функции будет действовать как статическая переменная

      

    # только для удобства чтения, может быть удалено и использовано вместо

    next_position = n

      

    if isLucky.counter > n:

        return 1

    if n % isLucky.counter == 0:

        return 0

      

    # Рассчитать следующую позицию входного номера

    next_position = next_position - next_position / isLucky.counter

      

    isLucky.counter = isLucky.counter + 1

      

    return isLucky(next_position)

      

      
Код водителя

  

isLucky.counter = 2 # Действует как статическая переменная

x = 5

if isLucky(x):

    print x,"is a Lucky number"

else:

    print x,"is not a Lucky number"

      
# Предоставлено Харшитом Агравалом

Выход:

5 is not a lucky no.

C #

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

using System;

  

class GFG {

      

    public static int counter = 2; 

  

    // Возвращает 1, если n счастливчик

    // в обратном порядке возвращает 0

    static bool isLucky(int n)

    {

          

        // переменная next_position is

        // просто для удобства чтения

        // программа, которую мы можем удалить

        // это и используй только

        int next_position = n;

          

        if(counter > n)

            return true;

        if(n % counter == 0)

            return false;     

  

        // вычисляем следующую позицию

        // ввод нет

        next_position -= next_position 

                            / counter;

      

        counter++;

          

        return isLucky(next_position);

    }

      

    // драйверная программа

    public static void Main () 

    {

        int x = 5;

          

        if( isLucky(x) )

            Console.Write(x + " is a "

                         + "lucky no.");

        else

            Console.Write(x + " is not"

                      + " a lucky no.");

    }

}

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

PHP

<?php
// PHP-программа для счастливых чисел

  
/ * Возвращает 1, если n счастливчик

   нет. в обратном порядке возвращает 0 * /

function isLucky($n)

{

    $counter = 2;

      

    / * переменная next_position is

       просто для удобства чтения

       программа, которую мы можем удалить

       это и пользуйся только * /

    $next_position = $n;

      

    if($counter > $n)

        return 1;

    if($n % $counter == 0)

        return 0; 

      

    / * рассчитать следующую позицию

       ввода нет * /

    $next_position -= $next_position / $counter;

      

    $counter++;

    return isLucky($next_position);

}

  

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

    $x = 5;

    if(isLucky($x) )

        echo $x ," is a lucky no.";

    else

        echo $x ," is not a lucky no.";

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


Выход:

5 is not a lucky no.

Пример:
Давайте возьмем пример из 19

1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,15,17,18,19,20,21, ……
1,3,5,7,9,11,13,15,17,19, … ..
1,3,7,9,13,15,19, ……….
1,3,7,13,15,19, ………
1,3,7,13,19, ………

На следующем шаге будет удалена каждая шестая последовательность. 19 не будет удален после этого шага, потому что позиция 19 является пятой после этого шага. Поэтому 19 счастливчиков. Давайте посмотрим, как выше код C узнает:

Current function callPosition after this callCounter for next callNext Call
isLucky(19 ) 103isLucky(10)
isLucky(10)74isLucky(7)
isLucky(7) 65isLucky(6)
isLucky(6) 56isLucky(5)

Когда вызывается isLucky (6), он возвращает 1 (потому что counter> n).

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

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

Счастливые числа

0.00 (0%) 0 votes