18/04/2024
18/04/2024
18/04/2024
Chương trình đếm số nguyên tố "đẹp" trong đoạn [1, N] (C++)
Mã nguồn:
C++
#include <iostream>
#include <math.h>
using namespace std;
bool isPrime(int n) {
if (n <= 1) return false;
if (n <= 3) return true;
if (n % 2 == 0 || n % 3 == 0) return false;
int sqrtN = sqrt(n);
for (int i = 5; i <= sqrtN; i += 6) {
if (n % i == 0 || n % (i + 2) == 0) return false;
}
return true;
}
bool isBeautifulPrime(int n) {
return isPrime(n) && !string::npos == string(to_string(n)).find_first_of("357");
}
int countBeautifulPrimes(int N) {
int count = 0;
for (int i = 1; i <= N; i++) {
if (isBeautifulPrime(i)) count++;
}
return count;
}
int main() {
int N;
cin >> N;
int countBeautifulPrimes = countBeautifulPrimes(N);
cout << countBeautifulPrimes << endl;
return 0;
}
Hãy thận trọng khi sử dụng các đoạn mã.
Giải thích mã nguồn:
Hàm isPrime(n): Kiểm tra xem n có phải là số nguyên tố hay không.
Sử dụng các trường hợp cơ bản để loại bỏ các số không phải là số nguyên tố: n <= 1, n = 2, n = 3.
Sử dụng vòng lặp để kiểm tra các ước số lẻ từ 5 đến căn bậc hai của n, bước nhảy là 6 (loại trừ các bội số của 2 và 3).
Nếu không tìm thấy ước số nào, n là số nguyên tố.
Hàm isBeautifulPrime(n): Kiểm tra xem n có phải là số nguyên tố "đẹp" hay không.
Gọi hàm isPrime(n) để kiểm tra xem n có phải là số nguyên tố hay không.
Sử dụng hàm string::find_first_of để tìm kiếm các chữ số "3", "5" hoặc "7" trong chuỗi to_string(n).
Nếu không tìm thấy các chữ số "3", "5" hoặc "7", n là số nguyên tố "đẹp".
Hàm countBeautifulPrimes(N): Đếm số lượng số nguyên tố "đẹp" trong đoạn [1, N].
Sử dụng vòng lặp từ 1 đến N.
Gọi hàm isBeautifulPrime(i) để kiểm tra xem i có phải là số nguyên tố "đẹp" hay không.
Tăng biến count nếu i là số nguyên tố "đẹp".
Trả về giá trị của count.
Hàm main():
Nhập giá trị của N từ bàn phím.
Gọi hàm countBeautifulPrimes(N) để đếm số lượng số nguyên tố "đẹp" trong đoạn [1, N].
Xuất kết quả ra màn hình.
Nếu bạn muốn hỏi bài tập
Các câu hỏi của bạn luôn được giải đáp dưới 10 phút
CÂU HỎI LIÊN QUAN