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

N'th Smart Number ใน C++


ตัวเลขอัจฉริยะคือตัวเลขที่มีตัวประกอบเฉพาะที่แตกต่างกันอย่างน้อยสามตัว คุณจะได้รับหมายเลข N ค้นหาตัวเลขอัจฉริยะตัวที่ n

ชุดเลขอัจฉริยะคือ

30, 42, 60, 66, 70, 78...

อัลกอริทึม

  • เริ่มต้นหมายเลข N.
  • เริ่มต้นการนับเป็น 0
  • เขียนฟังก์ชันที่ตรวจสอบว่าจำนวนที่กำหนดเป็นจำนวนเฉพาะหรือไม่
  • เขียนฟังก์ชันที่ตรวจสอบว่าตัวเลขนั้นฉลาดหรือไม่
  • เขียนลูปที่วนซ้ำจาก 30 เนื่องจากตัวเลขอัจฉริยะตัวแรกคือ 30
    • ตรวจสอบว่าตัวเลขปัจจุบันเป็นตัวเลขอัจฉริยะหรือไม่โดยใช้ฟังก์ชันจำนวนเฉพาะ
    • เพิ่มจำนวนขึ้น 1 เมื่อคุณพบตัวเลขอัจฉริยะ
    • คืนเลขอัจฉริยะเมื่อคุณนับเท่ากับ N

การนำไปใช้

ต่อไปนี้เป็นการนำอัลกอริธึมข้างต้นไปใช้ใน C++

#include<bits/stdc++.h>
using namespace std;
bool isPrime(int n) {
   if (n < 2) return false;
   for (int i = 2; i <= sqrt(n); i++) {
      if (n % i == 0) return false;
   }
   return true;
}
bool isSmartNumber(int n) {
   int count = 0;
   for (int i = 2; i < n; i++) {
      if (n % i == 0 && isPrime(i)) {
         count += 1;
      }
      if (count == 3) {
         return true;
      }
   }
return false;
}
int getNthSmartNumber(int n) {
   int i = 30, count = 0;
   while (true) {
      if (isSmartNumber(i)) {
         count += 1;
      }
      if (count == n) {
         return i;
      }
      i += 1;
   }
}
int main() {
   int N = 25;
   cout << getNthSmartNumber(N) << endl;
   return 0;
}

ผลลัพธ์

หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้

174