Trang chủ Tin Học Lớp 8 Một số được gọi là siêu nguyên tố nếu nó...

Một số được gọi là siêu nguyên tố nếu nó là số nguyên tố và có thể biểu diễn được thành tổng của hai số nguyên tố khác. Ví dụ: 5 là số siêu nguyên tố vì 5 = 2

Câu hỏi :

Một số được gọi là siêu nguyên tố nếu nó là số nguyên tố và có thể biểu diễn được thành tổng của hai số nguyên tố khác. Ví dụ: 5 là số siêu nguyên tố vì 5 = 2 + 3. Cho số nguyên dương . Hỏi có bao nhiêu số siêu nguyên tố không vượt quá ? pascal

Lời giải 1 :

program SuperPrimes;

function IsPrime(n: integer): boolean;
var
  i: integer;
begin
  if n <= 1 then
    IsPrime := False
  else if n <= 3 then
    IsPrime := True
  else if (n mod 2 = 0) or (n mod 3 = 0) then
    IsPrime := False
  else
  begin
    i := 5;
    while i * i <= n do
    begin
      if (n mod i = 0) or (n mod (i + 2) = 0) then
      begin
        IsPrime := False;
        Exit;
      end;
      i := i + 6;
    end;
    IsPrime := True;
  end;
end;

function CountSuperPrimes(n: integer): integer;
var
  primeNumbers: array of integer;
  superPrimeCount, i, j: integer;
begin
  superPrimeCount := 0;
  SetLength(primeNumbers, 0);

  for i := 2 to n - 1 do
  begin
    if IsPrime(i) then
    begin
      SetLength(primeNumbers, Length(primeNumbers) + 1);
      primeNumbers[High(primeNumbers)] := i;
    end;
  end;

  for i := 0 to High(primeNumbers) do
  begin
    for j := i to High(primeNumbers) do
    begin
      if (primeNumbers[i] + primeNumbers[j] <= n) and IsPrime(primeNumbers[i] + primeNumbers[j]) then
        Inc(superPrimeCount);
    end;
  end;

  CountSuperPrimes := superPrimeCount;
end;

var
  n, result: integer;
begin
  readln(n);
  result := CountSuperPrimes(n);
  writeln(result);
end.

Lời giải 2 :

Đáp án:

sieu_nguyen_to(n):
    result = 0
    for x từ 2 đến n:
        if la_so_nguyen_to(x):
            for a từ 2 đến x/2:
                if la_so_nguyen_to(a) và la_so_nguyen_to(x - a):
                    result += 1
                    th break         
    return result

la_so_nguyen_to(x):
    Nếu x == 2:
        trả về True
    Nếu x < 2 hoặc x chẵn:
        trả về False
    Duyệt i từ 3 đến căn bậc hai của x với bước nhảy 2:
        Nếu x chia hết cho i:
            trả về False
    trả về True

Giải thích các bước giải:

Để tìm các số siêu nguyên tố không vượt quá một số nguyên dương n, ta chỉ cần kiểm tra tất cả các số từ 2 đến n và kiểm tra xem số đó có phải là số nguyên tố không và có thể phân tích thành tổng của hai số nguyên tố khác không.

Để kiểm tra một số x có phải là số nguyên tố, ta có thể duyệt từ 2 đến căn bậc hai của x để kiểm tra xem có số nào chia hết cho x không. Nếu có, thì x không phải là số nguyên tố. Trái lại, nếu không có số nào chia hết cho x thì x là số nguyên tố.

Sau khi kiểm tra x có phải là số nguyên tố, ta có thể duyệt tất cả các số nguyên tố từ 2 đến x/2 để kiểm tra xem có cặp số nguyên tố a và b nào thỏa mãn x = a + b không. Nếu có ít nhất một cặp số nguyên tố a và b thỏa mãn, thì x là số siêu nguyên tố.

Dưới đây là code để tìm số lượng các số siêu nguyên tố không vượt quá n:

sieu_nguyen_to(n):
    result = 0
    for x từ 2 đến n:
        if la_so_nguyen_to(x):
            for a từ 2 đến x/2:
                if la_so_nguyen_to(a) và la_so_nguyen_to(x - a):
                    result += 1
                    th break         
    return result

la_so_nguyen_to(x):
    Nếu x == 2:
        trả về True
    Nếu x < 2 hoặc x chẵn:
        trả về False
    Duyệt i từ 3 đến căn bậc hai của x với bước nhảy 2:
        Nếu x chia hết cho i:
            trả về False
    trả về True

Sau khi viết xong code, ta có thể triển khai nó thành mã nguồn trong ngôn ngữ lập trình yêu thích của mình để tính số lượng số siêu nguyên tố không vượt quá một số nguyên dương n cụ thể.

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 8

Lớp 8 - Năm thứ ba ở cấp trung học cơ sở, học tập bắt đầu nặng dần và sang năm lại là năm cuối cấp, áp lực lớn dần. Hãy chú ý đến sức khỏe, cân bằng giữa học và nghỉ ngơi để đạt hiệu quả tốt nhất!

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