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

Số nguyên tố là số chỉ có 2 ước số 1 và chính nó

Số nguyên tố là số chỉ có 2 ước số 1 và chính nó. Nam đố Quân bài toán sau: Cho dãy số gồm các số nguyên dương. Đếm dãy số đó có bao nhiêu số nguyên tố. Ví dụ dãy số 3, 6, 2, 17, 11, 22, 19 có các số nguyên tố sau: 3, 2, 17, 11, 19.

Yêu cầu: cho dãy số gồm có n phần tử đếm xem trong dãy số đó có bao nhiêu số nguyên tố.

Dữ liệu vào:
  • Dòng đầu ghi số ???? (0≤????≤1000).
  • Dòng tiếp theo ghi giá trị dãy số ????1,????2,…???????? (1≤????????≤109) các số cách nhau một dấu cách.
Kết quả:
  • Ghi số lượng số nguyên tố. Không có số nào thì ghi -1.
Ví dụ:

Input

Copy
10 3 10 2 11 6 8 17 19 65 10

Output

Copy
5
2 trả lời
Hỏi chi tiết
72
Tham khảo câu trả lời từ Trợ lý ảo Lazi
Để giải quyết bài toán này, chúng ta cần xây dựng một chương trình cho phép đếm số nguyên tố trong một dãy số đã cho. Dưới đây là hướng dân từng bước để thực hiện điều này:

1. **Nhập dữ liệu**: Đọc số lượng phần tử `n` và dãy số đi kèm.
2. **Kiểm tra số nguyên tố**: Tạo một hàm để kiểm tra xem một số có phải là số nguyên tố hay không.
3. **Đếm số lượng số nguyên tố**: Duyệt qua dãy số và đếm số lượng số nguyên tố.
4. **Xuất kết quả**: In ra số lượng số nguyên tố, nếu không có số nguyên tố nào thì in ra -1.

Dưới đây là mã Python thực hiện bài toán:

```python
def is_prime(num):
if num <= 1:
return False
if num <= 3:
return True
if num % 2 == 0 or num % 3 == 0:
return False
i = 5
while i * i <= num:
if num % i == 0 or num % (i + 2) == 0:
return False
i += 6
return True

# Nhập số lượng phần tử
n = int(input().strip())
if n == 0:
print(-1)
else:
# Nhập dãy số
numbers = list(map(int, input().strip().split()))
prime_count = sum(1 for number in numbers if is_prime(number))

# Xuất kết quả
if prime_count > 0:
print(prime_count)
else:
print(-1)
```

### Giải thích mã:
- **Hàm `is_prime(num)`**: Kiểm tra xem `num` có phải là số nguyên tố hay không. Quá trình kiểm tra bao gồm kiểm tra các trường hợp đặc biệt trước rồi sau đó kiểm tra các số từ 5 đến căn bậc hai của `num`.
- Chương trình bắt đầu bằng cách đọc số lượng phần tử `n`. Nếu `n` bằng 0, nó sẽ in ra `-1` ngay lập tức.
- Dãy số được nhập và chuyển đổi thành một danh sách các số nguyên.
- Sử dụng comprehension để đếm số lượng số nguyên tố bằng cách áp dụng hàm `is_prime`.
- Kết quả cuối cùng sẽ được in ra: số nguyên tố nếu có, hoặc `-1` nếu không có số nguyên tố nào.

### Kiểm thử:
Bạn có thể thử nghiệm bài toán với các trường hợp khác nhau để đảm bảo chương trình hoạt động đúng cách.
1
0
Nguyen Thuan
10/08 16:18:16
+5đ tặng

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
0
Tuấn Phạm
21/08 19:44:55
MÃ PYTHON:

import math
def is_prime(n):
          if n < 2:
                 return False
          if n == 2: 
                 return True
          if n % 2 == 0:
                  return False
          for i in range(3, int(math.sqrt(n)) + 1, 2):
                  if n % i == 0:
                        return False
          return True

def count_primes(numbers):
          count = 0
                    for num in numbers:
                        if is_prime(num):
                                    count += 1
                    return count

n = int(input()) numbers = list(map(int, input().split()))
prime_count = count_primes(numbers)

if prime_count > 0:
          print(prime_count)
else:
          print(-1)
 

 


GIẢI THÍCH:
  • Hàm is_prime(n):
    • Hàm này kiểm tra xem n có phải là số nguyên tố không.
    • Nếu n nhỏ hơn 2 thì không phải số nguyên tố.
    • Nếu n chia hết cho bất kỳ số nào từ 2 đến căn bậc hai của n, thì không phải số nguyên tố.
  • Hàm count_primes(numbers):
    • Hàm này đếm số lượng số nguyên tố trong danh sách numbers.
    • Nó sử dụng hàm is_prime để kiểm tra từng phần tử trong danh sách.

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
Bài tập liên quan

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

×
Mua sắm thỏa thích với Temu -HOT-
×
Gia sư Lazi Gia sư