# Newman–Shanks–Williams prime

In mathematics, a Newman–Shanks–Williams prime (NSW prime) is a prime number p which can be written in the form:

Recurrence relation for Newman–Shanks–Williams prime is:

The first few terms of the sequence are 1, 1, 3, 7, 17, 41, 99, ….

Examples:

Input : n = 3
Output : 7

Input : n = 4
Output : 17


## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Below is the implementation of finding nth Newman–Shanks–Williams prime:

## C++

 // CPP Program to find Newman–Shanks–Williams prime  #include  using namespace std;     // return nth Newman–Shanks–Williams prime  int nswp(int n)  {      // Base case      if (n == 0 || n == 1)          return 1;         // Recursive step      return 2 * nswp(n - 1) + nswp(n - 2);  }     // Driven Program  int main()  {      int n = 3;         cout << nswp(n) << endl;      return 0;  }

## Java

 // Java Program to find   // Newman-Shanks-Williams prime  class GFG  {  // return nth Newman-Shanks-Williams  // prime  static int nswp(int n)  {      // Base case      if (n == 0 || n == 1)          return 1;         // Recursive step      return 2 * nswp(n - 1) + nswp(n - 2);  }     // Driver code   public static void main (String[] args)  {      int n = 3;      System.out.println(nswp(n));  }  }     // This code is contributed by Anant Agarwal.

## Python3

 # Python3 Program to find Newman–Shanks–Williams prime     # return nth Newman–Shanks–Williams prime  def nswp(n):             # Base case      if n == 0 or n == 1:          return 1        # Recursive step      return 2 * nswp(n - 1) + nswp(n - 2)     # Driven Program  n = 3 print (nswp(n))        # This code is contributed by Shreyanshi Arun.

## C#

 // C# Program to find  // Newman-Shanks-Williams prime  using System;     class GFG {             // return nth Newman-Shanks-Williams      // prime      static int nswp(int n)      {                     // Base case          if (n == 0 || n == 1)              return 1;             // Recursive step          return 2 * nswp(n - 1) + nswp(n - 2);      }         // Driver code      public static void Main()      {          int n = 3;                     Console.WriteLine(nswp(n));      }  }     // This code is contributed by vt_m.

## PHP

 

Output:

7


Below is Dynamic Programming solution of finding nth Newman–Shanks–Williams prime:

## C++

 // CPP Program to find Newman–Shanks–Williams prime  #include  using namespace std;     // return nth Newman–Shanks–Williams prime  int nswp(int n)  {      int dp[n + 1];         // Base case      dp[0] = dp[1] = 1;         // Finding nth Newman–Shanks–Williams prime      for (int i = 2; i <= n; i++)          dp[i] = 2 * dp[i - 1] + dp[i - 2];         return dp[n];  }     // Driver Program  int main()  {      int n = 3;         cout << nswp(n) << endl;      return 0;  }

## Java

 // Java Program for finding  // Newman-Shanks-Williams prime  import java.util.*;     class GFG  {      // return nth Newman_Shanks_Williams prime      public static int nswpn(int n)      {          int dp[] = new int[n + 1];                     // Base case          dp[0] = dp[1] = 1;                     // Finding nth Newman_Shanks_Williams prime          for (int i = 2; i <= n; i++)            dp[i] = 2 * dp[i - 1] + dp[i - 2];                     return dp[n];      }             // Driver Program      public static void main (String[] args) {                     int n = 3;                     System.out.println(nswpn(n));      }  }     /* This code is contributed by Akash Singh */

## Python3

 # Python3 Program to find   # Newman–Shanks–Williams prime     # return nth Newman–Shanks  # –Williams prime  def nswp(n):             # Base case      dp = [1 for x in range(n + 1)];             # Finding nth Newman–Shanks      # –Williams prime      for i in range(2, n + 1):          dp[i] = (2 * dp[i - 1] +                       dp[i - 2]);      return dp[n];     # Driver Code  n = 3;  print(nswp(n));     # This code is contributed  # by mits

## C#

 // C# Program to find Newman–Shanks–Williams prime     using System;     class GFG {         // return nth Newman–Shanks–Williams prime      static int nswp(int n)      {                     int[] dp = new int[n + 1];             // Base case          dp[0] = dp[1] = 1;             // Finding nth Newman–Shanks–Williams prime          for (int i = 2; i <= n; i++)              dp[i] = 2 * dp[i - 1] + dp[i - 2];             return dp[n];      }         // Driver Program      public static void Main()      {          int n = 3;             Console.WriteLine(nswp(n));      }  }     // This code is contributed by vt_m.

## PHP

 

Output:

7


Below is the code with O(1) space complexity

## C++

 // C++ code  #include  using namespace std;     int nswp(int n)  {             if(n == 0 || n == 1)       {          return 1;      }             // Here we only need to store last 2 values      // to find the value of n,       // so we will store those 2 values only.      int a = 1, b = 1;             for(int i = 2; i <= n; ++i)      {          int c = 2 * b + a;          a = b;          b = c;      }      return b;  }  int main()  {      int n = 3;      cout << nswp(n);      return 0;  }     // This code is contributed by SHUBHAMSINGH10

## Java

 //Write Java code here  class GFG{       static int nswp(int n){             if(n==0 || n==1) return 1;             //Here we only need to store last 2 values to find the value of n,              //so we will store those 2 values only.             int a=1,b=1;             for(int i=2;i<=n;++i){                 int c=2*b+a;                 a=b;                 b=c;             }             return b;       }       public static void main(String[] args){            int n=3;            System.out.println(nswp(n));       }  }

## Python3

 # Write Python3 code here     def nswp(n):      if(n<2): return 1     a,b=1,1     for i in range(2,n+1):          c=2*b+a          a=b          b=c      return b  n=3 print(nswp(n))

## C#

 // C# code   using System;     class GFG   {      static int nswp(int n) {          if (n == 0 || n == 1)              return 1;                         // Here we only need to store last 2 values           // to find the value of n,          // so we will store those 2 values only.          int a = 1, b = 1;          for (int i = 2; i <= n; ++i) {              int c = 2 * b + a;              a = b;              b = c;          }          return b;      }         public static void Main(String[] args)      {          int n = 3;          Console.WriteLine(nswp(n));      }  }     // This code is contributed by PrinciRaj1992

Output:

7


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.