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

Lập trình - Lớp 8
17/03 13:52:33

Viết chương trình nhập một dãy n số nguyên dương (2 < n < 100) từ bàn phím

PASCAL
Bài 4: (5đ) Số nguyên tố.
Viết chương trình nhập một dãy n số nguyên dương (2 < n < 100) từ bàn
phím, in ra màn hình:
+ Các số nguyên tố của dãy
+ Dãy các số nguyên tố liên tiếp có số lượng nhiều nhất (nếu có nhiều dãy
như thế thì chọn dãy có tổng các phần tử lớn hơn).
Ví dụ: Với n = 8 và dãy các số nhập vào là: 18; 17; 23; 21; 13; 3; 7; 10
thì in ra kết quả: Cac so nguyen to cua day la: 17; 23; 13; 3; 7
Day nguyen to lon nhat co 3 phan tu: 13; 3; 7
1 trả lời
Hỏi chi tiết
Trợ lý ảo
95
Tham khảo câu trả lời từ Trợ lý ảo Lazi
```Pascal
program Bai4;
var
n, i, j, count, maxCount, sum, maxSum: integer;
arr: array[1..100] of integer;
primeArr: array[1..100] of integer;

function isPrime(num: integer): boolean;
var
i: integer;
begin
if num < 2 then
isPrime := false
else
begin
for i := 2 to trunc(sqrt(num)) do
begin
if num mod i = 0 then
begin
isPrime := false;
exit;
end;
end;
isPrime := true;
end;
end;

begin
write('Nhap so luong phan tu n: ');
readln(n);

for i := 1 to n do
begin
write('Nhap phan tu thu ', i, ': ');
readln(arr[i]);
end;

writeln('Cac so nguyen to cua day la: ');
count := 0;
maxCount := 0;
sum := 0;
maxSum := 0;

for i := 1 to n do
begin
if isPrime(arr[i]) then
begin
count := count + 1;
sum := sum + arr[i];
primeArr[count] := arr[i];

if count > maxCount then
begin
maxCount := count;
maxSum := sum;
end;
end
else
begin
if count > 0 then
begin
count := 0;
sum := 0;
end;
end;
end;

for i := 1 to maxCount do
begin
write(primeArr[i], ' ');
end;

writeln;
writeln('Day nguyen to lon nhat co ', maxCount, ' phan tu: ');
for i := 1 to maxCount do
begin
write(primeArr[i], ' ');
end;
end.
```
Bạn có thể sao chép mã này và chạy trên trình biên dịch Pascal để kiểm tra kết quả.
1
0
+5đ tặng
program PrimeSequence;

const
  MAX = 100;

type
  ArrayOfInteger = array[1..MAX] of Integer;

var
  arr: ArrayOfInteger;
  n, i, j, count, maxCount, startIndex, maxStartIndex, sum: Integer;
  isPrime: Boolean;

// Function to check if a number is prime
function CheckPrime(num: Integer): Boolean;
var
  k: Integer;
begin
  if num < 2 then
    CheckPrime := False
  else
  begin
    CheckPrime := True;
    for k := 2 to Trunc(Sqrt(num)) do
    begin
      if num mod k = 0 then
      begin
        CheckPrime := False;
        Break;
      end;
    end;
  end;
end;

begin
  // Input
  Write('Nhap so phan tu cua day (2 < n < 100): ');
  Readln(n);
  
  // Check input validity
  while (n <= 2) or (n >= 100) do
  begin
    Write('Nhap lai so phan tu cua day (2 < n < 100): ');
    Readln(n);
  end;
  
  WriteLn('Nhap cac so nguyen duong:');
  for i := 1 to n do
    Readln(arr[i]);
  
  // Find prime numbers in the sequence and the longest prime sequence
  Write('Cac so nguyen to cua day la: ');
  maxCount := 0;
  sum := 0;
  startIndex := 1;
  maxStartIndex := 1;
  
  for i := 1 to n do
  begin
    if CheckPrime(arr[i]) then
    begin
      Write(arr[i], '; ');
      count := 1;
      sum := arr[i];
      
      for j := i + 1 to n do
      begin
        if CheckPrime(arr[j]) then
        begin
          count := count + 1;
          sum := sum + arr[j];
        end
        else
          Break;
      end;
      
      if count > maxCount then
      begin
        maxCount := count;
        maxStartIndex := startIndex;
      end
      else if (count = maxCount) and (sum > arr[maxStartIndex]) then
      begin
        maxStartIndex := startIndex;
      end;
      
      startIndex := i + 1;
    end;
  end;
  WriteLn;
  
  // Output the longest prime sequence
  Write('Day nguyen to lon nhat co ', maxCount, ' phan tu: ');
  for i := maxStartIndex to maxStartIndex + maxCount - 1 do
    Write(arr[i], '; ');
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 ký tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập

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 bạn bè học sinh cả nước, đến LAZI, sôi động, tích cực, trải nghiệm
Câu hỏi Lập trình mới nhất

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

Học ngoại ngữ với Flashcard

×
Gia sư Lazi Gia sư
×
Trợ lý ảo Trợ lý ảo