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
Below is the implementation of finding nth Newman–Shanks–Williams prime:
C++
// CPP Program to find Newman–Shanks–Williams prime#include <bits/stdc++.h>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
<?php// PHP Program to find // Newman–Shanks–Williams prime // return nth Newman – // Shanks – Williams primefunction nswp($n){ // Base case if ($n == 0 || $n == 1) return 1; // Recursive step return 2 * nswp($n - 1) + nswp($n - 2);} // Driver Code$n = 3;echo(nswp($n)); // This code is contributed by Ajit.?> |
Output:
7
Below is Dynamic Programming solution of finding nth Newman–Shanks–Williams prime:
C++
// CPP Program to find Newman–Shanks–Williams prime#include <bits/stdc++.h>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
<?php// PHP Program to find // Newman–Shanks–Williams prime // return nth Newman–Shanks// –Williams primefunction nswp($n){ // Base case $dp[0] = $dp[1] = 1; // Finding nth Newman–Shanks // –Williams prime for ($i = 2; $i <= $n; $i++) $dp[$i] = 2 * $dp[$i - 1] + $dp[$i - 2]; return $dp[$n];} // Driver Code$n = 3;echo(nswp($n)); // This code is contributed by Ajit.?> |
Output:
7
Below is the code with O(1) space complexity
C++
// C++ code#include <iostream>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.


