Computer >> Máy Tính >  >> Lập trình >> C ++

N’th Smart Number trong C ++

Một số thông minh là một số có chứa ít nhất ba thừa số nguyên tố khác nhau. Bạn được cho một số N. Tìm số thông minh thứ n.

Dãy số thông minh là

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

Thuật toán

  • Khởi tạo số N.
  • Khởi tạo số đếm bằng 0.
  • Viết một hàm để kiểm tra xem một số đã cho có phải là số nguyên tố hay không.
  • Viết một hàm để kiểm tra xem số có thông minh hay không.
  • Viết một vòng lặp lặp lại từ 30 vì số thông minh đầu tiên là 30.
    • Kiểm tra xem số hiện tại có phải là số thông minh hay không bằng cách sử dụng hàm số nguyên tố.
    • Tăng số đếm lên 1 khi bạn tìm thấy một số thông minh.
    • Trả về số thông minh khi bạn đếm bằng N.

Thực hiện

Sau đây là cách thực hiện thuật toán trên trong 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;
}

Đầu ra

Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.

174