Check if a number is Flavius Number

• Last Updated : 05 May, 2021

Given a series of integers from 1 to infinity and a number N.
The task is to remove every (i + 1)-th element from the remaining series at every i-th iterations and find that the given number N exists in the series or not.
Flavius Number

Numbers in the Flavius Sieve are called Flavius Numbers.
Flavius sieve starts with the natural numbers and keep repeating the below step:
At the k-th sieving step, remove every (k+1)-st term of the sequence remaining of N natural numbers after the (k-1)-st sieving step.
For Example: 1, 3, 7, 13, 19, 27, 39, 49,

Examples:

Input: N = 17
Output: N0
Series after i-th iterations
1). 1, 3, 5, 7, 9, 11, 13, 15, 17, …
2). 1, 3, 7, 9, 13, 15, 19, 21, 25, …
3). 1, 3, 7, 13, 15, 19, 25, …
4). 1, 3, 7, 13, 19, 27, ….
Input: N = 3
Output: Yes

Approach:

• If the given number is even so the answer is simply “No”. Because in the first iteration all the even number has been eliminated from the series.
• Repeat this process.
• Else remove the number of elements removed at 1st iteration i.e. (1/2)th the number and then check
if it is divisible by 3 the answer should be “No”, else subtract the numbers before it that were
removed i.e. (1/3)rd the number and so on.
• Repeat the above step for all iterations until we get an answer.

Below is the implementation of the approach:

C++

 // C++ implementation#include using namespace std; // Return the number is// Flavious Number or notbool Survives(int n){    int i;     // index i starts from 2 because    // at 1st iteration every 2nd    // element was remove and keep    // going for k-th iteration    for (int i = 2;; i++) {        if (i > n)            return true;        if (n % i == 0)            return false;         // removing the elements which are        // already removed at kth iteration        n -= n / i;    }} // Driver Codeint main(){    int n = 17;    if (Survives(n))        cout << "Yes" << endl;    else        cout << "No" << endl;     return 0;}

Java

 // Java implementation of the above approachclass GFG{ // Return the number is// Flavious Number or notstatic boolean Survives(int n){     // index i starts from 2 because    // at 1st iteration every 2nd    // element was remove and keep    // going for k-th iteration    for (int i = 2;; i++)    {        if (i > n)            return true;        if (n % i == 0)            return false;         // removing the elements which are        // already removed at kth iteration        n -= n / i;    }} // Driver Codepublic static void main(String[] args){    int n = 17;    if (Survives(n))        System.out.println("Yes");    else        System.out.println("No");}} // This code is contributed by 29AjayKumar

Python3

 # Python3 implementation of# the above approach # Return the number is# Flavious Number or notdef Survives(n) :     # index i starts from 2 because    # at 1st iteration every 2nd    # element was remove and keep    # going for k-th iteration    i = 2    while(True) :                 if (i > n) :            return True;                     if (n % i == 0) :            return False;         # removing the elements which are        # already removed at kth iteration        n -= n // i;        i += 1 # Driver Codeif __name__ == "__main__" :     n = 17;         if (Survives(n)) :        print("Yes");             else :        print("No");         # This code is contributed by AnkitRai01

C#

 // C# implementation of the above approachusing System; class GFG{ // Return the number is// Flavious Number or notstatic bool Survives(int n){     // index i starts from 2 because    // at 1st iteration every 2nd    // element was remove and keep    // going for k-th iteration    for (int i = 2;; i++)    {        if (i > n)            return true;        if (n % i == 0)            return false;         // removing the elements which are        // already removed at kth iteration        n -= n / i;    }} // Driver Codepublic static void Main(String[] args){    int n = 17;    if (Survives(n))        Console.WriteLine("Yes");    else        Console.WriteLine("No");}} // This code is contributed by PrinciRaj1992

Javascript


Output:
No

My Personal Notes arrow_drop_up