Lucky Numbers

Data StructureMathematical ProblemsAlgorithms

Lucky numbers are some special integer numbers. From basic numbers, some special numbers are eliminated by their position. Instead of their value, for their position, the numbers are eliminated. The numbers which are not deleted, they are the lucky numbers.

The number deletion follows some rule. At first, every second number are deleted, after that, all 3rd numbers are deleted and so on.

Here is some example −

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 (1 – 25 all)
1 3 5 7 9 11 13 15 17 19 21 23 25 (deleting all 2nd numbers)
1 3 7 9 13 15 19 21 25 (All 3rd numbers are deleted, starting from 5)
1 3 7 9 13 15 21 25 (All 7th numbers are deleted starting from 19)

Input and Output

Input: Put a number to check whether it is lucky or not. Let the number is 13 Output: 13 is a lucky number.

Algorithm

isLuckyNumber(number)

Input − A number.

Output − Check the number is lucky or not.

Begin
   counter := 2 (It is static data, not be initialized again in recursion call)
   if counter > n, then
      return 1
   if n mod counter = 0, then
      return 0
   n := n – (n / counter)
   counter := counter + 1
   isLuckyNumber(n)
End

Example

#include <iostream>
using namespace std;

int counter = 2;    //used during recursion

bool isLuckyNumber(int n) {
   if(counter > n)
      return 1;
   if(n%counter == 0)
      return 0;
   
   n -= n/counter;    //n will be next position for recursion
   counter++;
   return isLuckyNumber(n);
}

int main() {
   int x = 13;

   if(isLuckyNumber(x))
      cout << x<<" is a lucky number.";
   else
      cout << x<<" is not a lucky number.";
}

Output

13 is a lucky number.
raja
Published on 11-Jul-2018 14:31:13
Advertisements