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 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 = 3print (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
<?php // PHP Program to find // Newman–Shanks–Williams prime // return nth Newman – // Shanks – Williams prime function 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 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
<?php // PHP Program to find // Newman–Shanks–Williams prime // return nth Newman–Shanks // –Williams prime function 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 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=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.
Recommended Posts:
- Quick ways to check for Prime and find next Prime in Java
- Find coordinates of a prime number in a Prime Spiral
- Prime numbers after prime P with sum S
- Sum of each element raised to (prime-1) % prime
- Print the nearest prime number formed by adding prime numbers to N
- Absolute Difference between the Sum of Non-Prime numbers and Prime numbers of an Array
- Absolute difference between the Product of Non-Prime numbers and Prime numbers of an Array
- Check if a prime number can be expressed as sum of two Prime Numbers
- Check whether the sum of prime elements of the array is prime or not
- Print prime numbers with prime sum of digits in an array
- Print numbers such that no two consecutive numbers are co-prime and every three consecutive numbers are co-prime
- Print all numbers whose set of prime factors is a subset of the set of the prime factors of X
- Sum of prime numbers without odd prime digits
- Count occurrences of a prime number in the prime factorization of every element from the given range
- Absolute difference between the XOR of Non-Prime numbers and Prime numbers of an Array
- Check if a number is Prime, Semi-Prime or Composite for very large numbers
- Permutation of first N positive integers such that prime numbers are at prime indices
- Permutation of first N positive integers such that prime numbers are at prime indices | Set 2
- Count all prime numbers in a given range whose sum of digits is also prime
- Count prime numbers that can be expressed as sum of consecutive prime numbers
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.

