Related Articles
Newman–Shanks–Williams prime
• Difficulty Level : Easy
• Last Updated : 24 Mar, 2020

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 primeint nswp(int n){    // Base case    if (n == 0 || n == 1)        return 1;      // Recursive step    return 2 * nswp(n - 1) + nswp(n - 2);}  // Driven Programint main(){    int n = 3;      cout << nswp(n) << endl;    return 0;}

## Java

 // Java Program to find // Newman-Shanks-Williams primeclass GFG{// return nth Newman-Shanks-Williams// primestatic 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 primedef nswp(n):          # Base case    if n == 0 or n == 1:        return 1      # Recursive step    return 2 * nswp(n - 1) + nswp(n - 2)  # Driven Programn = 3print (nswp(n))    # This code is contributed by Shreyanshi Arun.

## C#

 // C# Program to find// Newman-Shanks-Williams primeusing 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 primeint 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 Programint main(){    int n = 3;      cout << nswp(n) << endl;    return 0;}

## Java

 // Java Program for finding// Newman-Shanks-Williams primeimport 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 primedef 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 Coden = 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 hereclass 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 bn=3print(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


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.

My Personal Notes arrow_drop_up