ตัวเลขสุภาพคือจำนวนบวกที่สามารถเขียนเป็นผลบวกของจำนวนบวก 2 ตัวขึ้นไปได้
ชุดตัวเลขสุภาพคือ
3 5 6 7 9 10 11 12 13 14...
มีสูตรในการหาเลขสุภาพตัวที่ n สูตรคือ n + log2 (n + บันทึก2 (น)). บันทึกเริ่มต้นคำนวณด้วยฐาน e เราจำเป็นต้องคำนวณโดยใช้ฐาน 2 แบ่งผลลัพธ์บันทึกเริ่มต้นด้วย log(2) เพื่อรับค่าของบันทึกด้วยฐาน e
อัลกอริทึม
- อัลกอริทึมของตัวเลขสุภาพที่ n ตรงไปตรงมา
- เริ่มต้นหมายเลข N.
- ใช้สูตรข้างต้นเพื่อคำนวณจำนวนสุภาพที่ n
- ตรวจสอบให้แน่ใจว่าได้เพิ่มค่าของ n ขึ้น 1 ก่อนคำนวณจำนวนสุภาพที่ n
การนำไปใช้
ต่อไปนี้เป็นการนำอัลกอริธึมข้างต้นไปใช้ใน C++
#include <bits/stdc++.h> using namespace std; double getNthPoliteNumber(double n) { n += 1; return n + (log((n + (log(n) / log(2.0))))) / log(2.0); } int main() { double n = 10; cout << (int)getNthPoliteNumber(n) << endl; return 0; }
ผลลัพธ์
หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้
14