在数学中,纽曼–肖克斯–威廉素数(NSW素数)是素数p,可以用以下形式表示:
Newman–Shanks–Williams素数的递推关系为:
序列的前几项是1、1、3、7、17、41、99等。
例子:
Input : n = 3
Output : 7
Input : n = 4
Output : 17
以下是找到第n个Newman–Shanks–Williams素数的实现:
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
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
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
输出:
7
以下是找到第n个Newman–Shanks–Williams素数的动态编程解决方案:
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
输出:
7
下面是具有O(1)空间复杂度的代码
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
输出:
7