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

หาตัวเลข Non-Square ลำดับที่ N ด้วย C++

เราทุกคนรู้จักตัวเลขที่ไม่ใช่กำลังสองของตัวเลขใดๆ เช่น 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 หรือภาษาอื่นๆ ได้ เราหวังว่าคุณจะพบว่าบทความนี้เป็นประโยชน์และให้ข้อมูลครบถ้วน เพราะเราอธิบายทุกอย่างในวิธีที่ง่ายที่สุดเท่าที่จะทำได้