Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นิวแมน-แชงค์ส-วิลเลียมส์ ไพรม์ใน C++


ลำดับเฉพาะของ 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