Trang chủ Tin Học Lớp 9 Với mỗi số nguyên dương `N > 1` ta đặt...

Với mỗi số nguyên dương `N > 1` ta đặt `f(N)` là số nguyên tố nhỏ nhất lớn hơn `N` và `g(n)` là số nguyên tố lớn nhất không vượt quá `N`. Cho số nguyên dương `

Câu hỏi :

Với mỗi số nguyên dương `N > 1` ta đặt `f(N)` là số nguyên tố nhỏ nhất lớn hơn `N` và `g(n)` là số nguyên tố lớn nhất không vượt quá `N`. Cho số nguyên dương `N > 1`, tính giá trị biểu thức: \begin{array}{c} \displaystyle\sum_{i=2}^{N} \ \dfrac{1}{f(i) \times g(i)} \end{array} Dữ liệu + Dòng đầu tiên: chứa số nguyên dương `T` `(1 <=T <=10^3)` là số bộ dữ liệu. + `T` dòng tiếp theo: mỗi dòng chứa số nguyên dương `N` là yêu cầu của một bộ dữ liệu. Kết quả Gồm `T` dòng là kết quả của `T` bộ dữ liệu, kết quả của mỗi bộ dữ liệu được in ra theo phân số tối dạng dạng "p/q" với `p, q in Z` và `q > 0`.

Lời giải 1 :

#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;

// Hàm kiểm tra số nguyên tố
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;
}

// Hàm tính giá trị biểu thức
string calculateExpression(int N) {
    // Tính f(N)
    int fN = N + 1;
    while (!isPrime(fN)) {
        fN++;
    }

    // Tính g(N)
    int gN = N;
    while (!isPrime(gN)) {
        gN--;
    }

    // Tính giá trị biểu thức
    int numerator = 0;
    for (int i = 2; i <= N; i++) {
        numerator += fN * gN;
        fN++;
        while (!isPrime(fN)) {
            fN++;
        }
        gN--;
        while (!isPrime(gN)) {
            gN--;
        }
    }

    // Tính ước chung lớn nhất của numerator và N^2
    int gcd = __gcd(numerator, N*N);

    // Chuẩn hóa kết quả theo phân số tối đa
    numerator /= gcd;
    int denominator = N*N / gcd;

    return to_string(numerator) + "/" + to_string(denominator);
}

int main() {
    int T;
    cin >> T;

    vector<int> dataSet(T);
    for (int i = 0; i < T; i++) {
        cin >> dataSet[i];
    }

    for (int i = 0; i < T; i++) {
        string result = calculateExpression(dataSet[i]);
        cout << result << endl;
    }

    return 0;
}

Bạn có biết?

Tin học là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng. Tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin. Hãy tận dụng sức mạnh của tin học để giải quyết các vấn đề và sáng tạo ra những giải pháp mới!

Nguồn :

Wikipedia - Bách khoa toàn thư

Tâm sự lớp 9

Lớp 9 - Là năm cuối ở cấp trung học cơ sở, chúng ta sắp phải bước vào một kỳ thi căng thẳng và sắp chia tay bạn bè, thầy cô. Áp lực từ kỳ vọng của phụ huynh và tương lai lên cấp 3 thật là lớn, nhưng hãy tin vào bản thân và giữ vững sự tự tin!

Nguồn :

sưu tập

Liên hệ hợp tác hoặc quảng cáo: gmail

Điều khoản dịch vụ

Copyright © 2021 HOCTAPSGK