เราทุกคนรู้จักตัวเลขที่ไม่ใช่กำลังสองของตัวเลขใดๆ เช่น 2, 3, 5, 7, 8 เป็นต้น มี Non-Square Numbers ลำดับที่ N และเป็นไปไม่ได้ที่จะรู้ทุกตัวเลข ดังนั้น ในบทความนี้ เราจะอธิบายทุกอย่างเกี่ยวกับ Square-free Number (ตัวเลขที่ไม่มีตัวประกอบเป็นกำลังสอง) หรือ Non-Square Number และวิธีการหา Non-Square Number ลำดับที่ N ใน C++
Non-Square Number ลำดับที่ N
ตัวเลขถูกกล่าวว่าเป็น Perfect Square (กำลังสองสมบูรณ์) หากมันเป็นกำลังสองของจำนวนเต็ม ตัวอย่าง Perfect Square Numbers:
1 คือกำลังสองของ 1 4 คือกำลังสองของ 2 9 คือกำลังสองของ 3 16 คือกำลังสองของ 4 25 คือกำลังสองของ 5
ตัวเลขถูกกล่าวว่าเป็น Non-Square Number หากมันไม่ใช่กำลังสองของจำนวนเต็มใดๆ ตัวอย่าง 15 Non-Square Numbers แรก:
2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 17, 18, 19
วิธีหา Non-Square Number ลำดับที่ N
ตัวอย่างการหา Non-Square Number ลำดับที่ N:
Input : 2 Output : 3 Explanation : Non-square ลำดับที่ 2 คือ 3 (หลังจาก 2 ซึ่งเป็นลำดับที่ 1) Input : 5 Output : 7 Explanation : Non-square ลำดับที่ 5 คือ 7 (หลังจาก 2,3,5,6 ซึ่งเป็น 4 ตัวแรก)
หลังจากดูตัวอย่างข้างต้น เราสามารถสรุปวิธีแก้ได้ว่า สำหรับการหา Non-Square Number ลำดับที่ N เราต้องเริ่มนับสำหรับ nth ตัวเลข และตรวจสอบจำนวนเต็มแต่ละตัวว่ามันเป็น Perfect Square หรือไม่ และไม่นับตัวเลขที่เป็น Perfect Square กล่าวคือ นับถ้าตัวเลขเป็น Non-Square
การสร้างโปรแกรม C++ เพื่อหา Non-Square Number ลำดับที่ N
เราสร้าง Syntax (รูปแบบโค้ด) ครบถ้วนสำหรับการหา Non-Square Number ลำดับที่ N ใน C++
ตัวอย่างโค้ด
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n; // รับอินพุตจากผู้ใช้
int i = 2; // เนื่องจาก 0 และ 1 เป็นกำลังสองของตัวเอง เราเริ่มคำนวณจาก 2
int cnt = 0; // ประกาศตัวแปรนับ
while(cnt != n) { // ลูปจะสิ้นสุดเมื่อตัวนับมีค่าเท่ากับ n
int a = sqrt(i);
if(i != a * a)
cnt++;
if(cnt != n)
i++;
}
cout << i << "\n"; // พิมพ์ Non-square number ลำดับที่ n
}
ผลลัพธ์
5
(เมื่อเราใส่ 3 เป็นอินพุต เราจะได้ 5 เป็นเอาต์พุต)
มาเข้าใจโค้ดข้างต้นสั้นๆ
ขั้นตอนที่ 1 - รับอินพุตจากผู้ใช้และตั้งค่า count เป็น 0
cin >> n; // รับอินพุตจากผู้ใช้ int i = 2; // เริ่มคำนวณจาก 2 int cnt = 0; // ประกาศตัวแปรนับ
ขั้นตอนที่ 2 - นับ Non-square numbers และข้าม Square numbers
while(cnt != n) { // ลูปสิ้นสุดเมื่อตัวนับเท่ากับ n
int a = sqrt(i); // หารากที่สองด้วยฟังก์ชัน sqrt()
if(i != a * a) // ตรวจสอบว่าตัวเลขเป็น perfect square หรือไม่
cnt++; // เพิ่มตัวนับหากพบ non-perfect number
if(cnt != n)
i++;
}
ขั้นตอนที่ 3 - พิมพ์ Non-square number ลำดับที่ N
cout << i << "\n"; // พิมพ์ non-square number ลำดับที่ n
สรุป
ในบทความนี้ เราอธิบายเกี่ยวกับ Non-Square Number และวิธีการหา Non-Square Number ลำดับที่ N ใน C++ นอกจาก C++ เราสามารถใช้โปรแกรมนี้ในภาษาโปรแกรมมิ่งอื่นๆ เช่น Java, Python, C หรือภาษาอื่นๆ ได้ เราหวังว่าคุณจะพบว่าบทความนี้เป็นประโยชน์และให้ข้อมูลครบถ้วน เพราะเราอธิบายทุกอย่างในวิธีที่ง่ายที่สุดเท่าที่จะทำได้