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:
 { \Huge  S_{2m+1} = \frac{  {(1+\sqrt{2})^{2m+1}  + (1-\sqrt{2})^{2m+1} }  }{2} }

Recurrence relation for Newman–Shanks–Williams prime is:

S_0 = 1
S_1 = 1
S_n = 2*S_{n-1} + S{n-2}
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 = 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

<?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


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 write comments if you find anything incorrect, or you want to share more information about the topic discussed above.


Improved By : jit_t, Mithun Kumar




Recommended Posts:



3 Average Difficulty : 3/5.0
Based on 3 vote(s)






User Actions