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

Số lớn nhất có các chữ số nguyên tố trong C ++

Trong hướng dẫn này, chúng ta sẽ viết một chương trình tìm số lớn nhất có các chữ số nguyên tố nhỏ hơn n.

Hãy xem các bước để giải quyết vấn đề.

  • Viết một vòng lặp lặp lại từ 0 đến n.
    • Nếu chữ số hiện tại không phải là số nguyên tố.
      • Khi chữ số nhỏ hơn 2, hãy giảm giá trị i. Nếu giá trị i là âm, thì giá trị bằng 0.
      • Cập nhật giá trị chỉ số hiện tại bằng chữ số nguyên tố nhỏ nhất tiếp theo.
      • Từ chỉ mục tiếp theo, hãy chuyển mọi chữ số thành 7.
  • Trả về n.

Ví dụ

Hãy xem mã.

#include <bits/stdc++.h>
using namespace std;
bool isPrime(char c) {
   return c == '2' || c == '3' || c == '5' || c == '7';
}
void decrease(string& n, int i) {
   if (n[i] <= '2') {
      n.erase(i, 1);
      n[i] = '7';
   }else if (n[i] == '3') {
      n[i] = '2';
   }else if (n[i] <= '5') {
      n[i] = '3';
   }else if (n[i] <= '7') {
      n[i] = '5';
   }else {
      n[i] = '7';
   }
   return;
}
string getPrimeDigitsNumber(string n) {
   for (int i = 0; i < n.length(); i++) {
      if (!isPrime(n[i])) {
         while (n[i] <= '2' && i >= 0) {
            i--;
         }
         if (i < 0) {
            i = 0;
         }
         decrease(n, i);
         for (int j = i + 1; j < n.length(); j++) {
            n[j] = '7';
         }
         break;
      }
   }
   return n;
}
int main() {
   string n = "7464";
   cout << getPrimeDigitsNumber(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.

7377

Kết luận

Nếu bạn có bất kỳ câu hỏi nào trong hướng dẫn, hãy đề cập đến chúng trong phần bình luận.