C++ 中的 Newman-Shanks-Williams 素數
newman-shanks-williams 素數序列如下所示
1, 1, 3, 7, 17, 41...
如果我們對序列中的項進行推廣,則得到
a0=1 a1=1 an=2*a(n-1)+a(n-2)
演算法
- 初始化數字 n。
- 初始化序列開頭數字為 1 和 1。
- 編寫一個迴圈,迭代至 n。
- 使用前一個數字計算下一個數字。
- 更新前兩個數字。
- 返回最後一個數字。
實現
以下是上述演算法在 C++ 中的實現
#include <bits/stdc++.h>
using namespace std;
int getNthTerm(int n) {
if(n == 0 || n == 1) {
return 1;
}
int a = 1, b = 1;
for(int i = 3; i <= n; ++i) {
int c = 2 * b + a;
a = b;
b = c;
}
return b;
}
int main() {
int n = 5;
cout << getNthTerm(n) << endl;
return 0;
}輸出
如果你執行以上程式碼,則會得到以下結果。
17
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP