Related Articles
Number of unmarked integers in a special sieve
• Difficulty Level : Medium
• Last Updated : 26 Apr, 2021

Given an array A containing numbers from 2 to N.. A special type of sieving is done on it .
The procedure of sieving is as follows:

1. Create an array with elements as consecutive integers from 2 to N and mark every element in the array as unmarked.
2. Let an integer Q = N and mark all the proper divisors of Q except Q itself in the array.
3. Find the largest number unmarked less than Q and assign Q to it, and repeat from step 2. If there are no more unmarked elements then stop.

Find the number of unmarked integers after sieving.
Examples:

```Input : N = 5
Output : Number of unmarked elements = 3
Explanation : We create array A[] = { 2, 3, 4, 5 }.
2 is marked as it is a proper divisor of 4.

Input : N = 4
Output : Number of unmarked elements = 2```

Naive Approach:
One basic approach is to run two loops. Outer loop to traverse the whole array and inner loop for traversing from 2 – Q to unmark all the proper divisors of Q by checking a[i] % Q = 0.
Time Complexity: O(N^2)
Efficient Approach:
A simple observation suggests that actually there is no need to do sieving here instead, the value of N will determine the answer.
Case 1: If N is Odd then number of unmarked elements will be (N/2) + 1.
Case 2: If N is Even then number of unmarked elements will be (N/2).
Time Complexity: O(1)
Examples:

Input : N = 5
Output : 3
A[] = { 2, 3, 4, 5 }
Steps:
1.) Q = 5 : Mark All the proper divisors of Q, here no element is there so every element remains unmarked.
3.) Q = 4 : Mark all the proper divisors of Q. Here 2 gets marked and unmarked elements are {3, 4, 5}.
5.) Q = 3 :
6.) Now no further marking can be done so stop here
So number of unmarked elements are 3 i.e {3, 4, 5}
In case of ODD value of N result should be (N/2)+1 = (3/2)+1 = (5/2)+1 = 2+1= 3.
Input : N = 4
Output : 2
A[] = { 2, 3, 4 }
Steps:
1.) Q = 4 Mark all the proper divisors of Q. So here 2 gets marked and unmarked elements are {3, 4}
3.) Q = 3
4.) Now no further marking can be done so stop here
So number of unmarked element after sieving are {3, 4} = 2
In case of EVEN value of N result should be (N/2) = (4/2) = 2

## C++

 `// C++ Program to determine the``// number of unmarked integers in``// a special sieve``#include ``using` `namespace` `std;` `int` `countUnmarked(``int` `N)``{``    ``if` `(N % 2 == 0)``       ``return` `N/2;``    ``else``       ``return` `N/2 + 1;``}` `// Driver Code``int` `main()``{``    ``int` `N = 4;``    ``cout << ``"Number of unmarked elements: "``         ``<< countUnmarked(N) << endl;``    ``return` `0;``}`

## Java

 `// Java Program to determine``// the number of unmarked``// integers in a special sieve``import` `java.io.*;` `class` `GFG``{``static` `int` `countUnmarked(``int` `N)``{``    ``if` `(N % ``2` `== ``0``)``    ``return` `N / ``2``;``    ``else``    ``return` `N / ``2` `+ ``1``;``}` `// Driver Code``public` `static` `void` `main (String[] args)``{``    ``int` `N = ``4``;``    ``System.out.println(``"Number of unmarked "` `+``                                ``"elements: "` `+``                            ``countUnmarked(N));``}``}` `// This code is contributed``// by anuj_67.`

## Python3

 `# Python3 Program to determine``# the number of unmarked``# integers in a special sieve``def` `countUnmarked(N):``    ``if` `(N ``%` `2` `=``=` `0``):``        ``return` `N ``/` `2``;``    ``else``:``        ``return` `N ``/` `2` `+` `1``;` `# Driver Code``N ``=` `4``;``print``(``"Number of unmarked elements:"``,``              ``int``(countUnmarked(N)));``    ` `# This code is contributed``# by mits`

## C#

 `// C# Program to determine``// the number of unmarked``// integers in a special sieve``using` `System;` `class` `GFG``{``static` `int` `countUnmarked(``int` `N)``{``    ``if` `(N % 2 == 0)``        ``return` `N / 2;``    ``else``        ``return` `N / 2 + 1;``}` `// Driver Code``public` `static` `void` `Main ()``{``    ``int` `N = 4;``    ``Console.WriteLine(``"Number of unmarked "` `+``                               ``"elements: "` `+``                           ``countUnmarked(N));``}``}` `// This code is contributed``// by anuj_67.`

## PHP

 ``

## Javascript

 ``
Output:
`Number of unmarked elements: 2`

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up