给定一系列从1到无穷大的整数,以及一个数N。
任务是在第i次迭代中从其余序列中删除第(i +1)个元素,并确定给定数字N是否存在于序列中。
黄蜂编号:
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,
例子:
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
方法:
- 如果给定的数字是偶数,那么答案就是“否”。因为在第一次迭代中,所有偶数都已从序列中消除。
- 重复此过程。
- 否则,删除第一次迭代中删除的元素数量,即第(1/2)个数量,然后检查
如果可以被3整除,则答案应该为“否”,否则减去之前的数字
删除编号的(1/3),依此类推。 - 对所有迭代重复上述步骤,直到得到答案。
- 否则,删除第一次迭代中删除的元素数量,即第(1/2)个数量,然后检查
下面是该方法的实现:
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
输出:
No