Bài tập  /  Bài đang cần trả lời

Hãy viết chương trình kiểm tra xem một số có phải là “số giả nguyên tố” hay không

----- Nội dung dịch tự động từ ảnh -----
Trong lý thuyết số, “số giã nguyên tô” là một số (có thể là hợp số) thoả mãn
một tính chất nào đó của số nguyên tố. Tuỳ theo tính chất mà ta sẽ có các loại số gia
nguyên tố khác nhau. Ta quy ước tính chất một số giả nguyên tố như sau: “Là một số
thập phân hữu hạn dương mà từng chữ số của nó là số nguyên tố và tổng các chữ
số của nó cũng là số nguyên tố (với phần nguyên và phần thập phân cách nhau
bởi dấu phẩy)”. Hãy viết chương trình kiểm tra xem một số có phải là “số giã
nguyên tố” hay không.
Dữ liệu vào từ file: GIANT.INP
- Dòng đầu tiên ghi số thập phân hữu hạn dương (không quá 300 chữ số).
Két qua ra file: GIANT.OUT
- Dòng đầu tiên ghi kết quả “CO” hoặc “KHÔNG”.
Ví dụ:
GIANT.OUT
GIANT.INP
73,232
73,23212
со
KHONG
2 Xem trả lời
Hỏi chi tiết
70
2
3
Nguyễn Hải Huy
03/02 20:55:37
+5đ tặng
uses crt;
var ss: ansistring;
    res: boolean;
    t, i: longint;
    
function prime(x: longint): boolean;
var i: longint;
begin
    for i:=2 to trunc(sqrt(x)) do 
        if x mod i = 0 then exit(false);
    exit(true);
end;
    
begin
    res:=true;
    readln(ss);
    
    for i:=1 to length(ss) do 
        if ss[i] in ['0'..'9'] then begin
            inc(t, ord(ss[i]) - 48);
            res:=res and (ss[i] in ['2', '3', '5', '7']);
        end;
    
    res:=res and prime(t);
    if res then write('CO') else write('KHONG');
readln;
end.

Mở khóa để xem toàn bộ nội dung trả lời

(?)
Bạn đã đạt đến giới hạn của mình. Bằng cách Đăng ký tài khoản, bạn có thể xem toàn bộ nội dung trả lời
Cải thiện điểm số của bạn bằng cách đăng ký tài khoản Lazi.
Xem toàn bộ các câu trả lời, chat trực tiếp 1:1 với đội ngũ Gia sư Lazi bằng cách Đăng nhập tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập
1
3
cừu
03/02 21:00:03
+4đ tặng
var
  decimalNumber: String;

// Hàm kiểm tra số nguyên tố
function laSoNguyenTo(n: Integer): Boolean;
var
  i: Integer;
begin
  if n < 2 then
    Result := False
  else
  begin
    Result := True;
    for i := 2 to Trunc(Sqrt(n)) do
      if n mod i = 0 then
      begin
        Result := False;
        Break;
      end;
  end;
end;

// Hàm kiểm tra số giã nguyên tố
function laSoGiaNguyenTo(decimalNumber: String): Boolean;
var
  i, sum: Integer;
  chuSo: Char;
begin
  sum := 0;

  // Kiểm tra từng chữ số của số giã nguyên tố
  for i := 1 to Length(decimalNumber) do
  begin
    chuSo := decimalNumber[i];
    if not laSoNguyenTo(StrToInt(chuSo)) then
    begin
      Result := False;
      Exit;
    end;
    sum := sum + StrToInt(chuSo);
  end;

  // Kiểm tra tổng của các chữ số cũng là số nguyên tố
  Result := laSoNguyenTo(sum);
end;

// Chương trình chính
begin
  // Đọc dữ liệu từ file
  Assign(Input, 'GIANT.INP');
  Reset(Input);
  ReadLn(decimalNumber);
  Close(Input);

  // Kiểm tra và ghi kết quả vào file
  Assign(Output, 'GIANT.OUT');
  Rewrite(Output);
  if laSoGiaNguyenTo(decimalNumber) then
    WriteLn('CO')
  else
    WriteLn('KHONG');
  Close(Output);
end.
 

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng học sinh cả nước và AI, sôi động, tích cực, trải nghiệm

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường
×
Trợ lý ảo Trợ lý ảo
×
Đấu trường tri thức | Lazi Quiz Challenge +500k
Gửi câu hỏi
×