Related Articles

# Nodes with prime degree in an undirected Graph

• Difficulty Level : Medium
• Last Updated : 20 May, 2021

Given an undirected graph with N vertices and M edges, the task is to print all the nodes of the given graph whose degree is a Prime Number.
Examples:

Input: N = 4, arr[][] = { { 1, 2 }, { 1, 3 }, { 1, 4 }, { 2, 3 }, { 2, 4 }, { 3, 4 } }
Output: 1 2 3 4
Explanation:
Below is the graph for the above information:

The degree of the node as per above graph is:
Node -> Degree
1 -> 3
2 -> 3
3 -> 3
4 -> 3
Hence, the nodes with prime degree are 1 2 3 4
Input: N = 5, arr[][] = { { 1, 2 }, { 1, 3 }, { 2, 4 }, { 2, 5 } }
Output: 1

Approach:

1. Use Sieve of Eratosthenes to calculate the prime numbers up to 105.
2. For each vertex, the degree can be calculated by the length of the Adjacency List of the given graph at the corresponding vertex.
3. Print those vertices of the given graph whose degree is a Prime Number.

Below is the implementation of the above approach:

## C++

 // C++ implementation of the approach #include using namespace std; int n = 10005; // To store Prime Numbersvector Prime(n + 1, true); // Function to find the prime numbers// till 10^5void SieveOfEratosthenes(){     int i, j;    Prime[0] = Prime[1] = false;    for (i = 2; i * i <= 10005; i++) {         // Traverse all multiple of i        // and make it false        if (Prime[i]) {             for (j = 2 * i; j < 10005; j += i) {                Prime[j] = false;            }        }    }} // Function to print the nodes having// prime degreevoid primeDegreeNodes(int N, int M,                      int edges[][2]){    // To store Adjacency List of    // a Graph    vector Adj[N + 1];     // Make Adjacency List    for (int i = 0; i < M; i++) {        int x = edges[i][0];        int y = edges[i][1];         Adj[x].push_back(y);        Adj[y].push_back(x);    }     // To precompute prime numbers    // till 10^5    SieveOfEratosthenes();     // Traverse each vertex    for (int i = 1; i <= N; i++) {         // Find size of Adjacency List        int x = Adj[i].size();         // If length of Adj[i] is Prime        // then print it        if (Prime[x])            cout << i << ' ';    }} // Driver codeint main(){    // Vertices and Edges    int N = 4, M = 6;     // Edges    int edges[M][2] = { { 1, 2 }, { 1, 3 },                        { 1, 4 }, { 2, 3 },                        { 2, 4 }, { 3, 4 } };     // Function Call    primeDegreeNodes(N, M, edges);     return 0;}

## Python3

 # Python3 implementation of# the above approachn = 10005;  # To store Prime NumbersPrime = [True for i in range(n + 1)]  # Function to find# the prime numbers# till 10^5def SieveOfEratosthenes():      i = 2       Prime[0] = Prime[1] = False;         while i * i <= 10005:          # Traverse all multiple        # of i and make it false        if (Prime[i]):                       for j in range(2 * i, 10005):                Prime[j] = False               i += 1       # Function to print the# nodes having prime degreedef primeDegreeNodes(N, M, edges):     # To store Adjacency    # List of a Graph    Adj = [[] for i in range(N + 1)];      # Make Adjacency List    for i in range(M):        x = edges[i][0];        y = edges[i][1];          Adj[x].append(y);        Adj[y].append(x);         # To precompute prime    # numbers till 10^5    SieveOfEratosthenes();      # Traverse each vertex    for i in range(N + 1):          # Find size of Adjacency List        x = len(Adj[i]);          # If length of Adj[i] is Prime        # then print it        if (Prime[x]):            print(i, end = ' ')           # Driver codeif __name__ == "__main__":         # Vertices and Edges    N = 4    M = 6      # Edges    edges = [[1, 2], [1, 3],             [1, 4], [2, 3],             [2, 4], [3, 4]];      # Function Call    primeDegreeNodes(N, M, edges); # This code is contributed by rutvik_56

## Javascript


Output:
1 2 3 4

Time Complexity: O(N + M), where N is the number of vertices and M is the number of edges.

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

My Personal Notes arrow_drop_up