# 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 not``bool` `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 Code``int` `main()``{``    ``int` `n = 17;``    ``if` `(Survives(n))``        ``cout << ``"Yes"` `<< endl;``    ``else``        ``cout << ``"No"` `<< endl;` `    ``return` `0;``}`

## Java

 `// Java implementation of the above approach``class` `GFG``{` `// Return the number is``// Flavious Number or not``static` `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 Code``public` `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 not``def` `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 Code``if` `__name__ ``=``=` `"__main__"` `:` `    ``n ``=` `17``;``    ` `    ``if` `(Survives(n)) :``        ``print``(``"Yes"``);``        ` `    ``else` `:``        ``print``(``"No"``);``        ` `# This code is contributed by AnkitRai01`

## C#

 `// C# implementation of the above approach``using` `System;` `class` `GFG``{` `// Return the number is``// Flavious Number or not``static` `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 Code``public` `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