Môn Tin họcQuản lý học tập Tin học

Vé số trúng thưởng siêu thị VinMart – Tìm lỗi trong hàm kiểm tra số nguyên tố

Lớp 10Lập trìnhpythonGiải quyết vấn đề với máy tínhVận dụng cao

Thang điểm 10 · 6 test case chấm tự động · 3 tiêu chí chấm

Siêu thị VinMart dùng chương trình sau để kiểm tra một số nguyên n (ghi trên hoá đơn) có phải là số nguyên tố hay không, nếu đúng thì khách hàng được thông báo Trung thuong, ngược lại thông báo Khong trung thuong.

Đoạn code hiện tại như sau:

  • def is_special(n):
  •     C = 0
  •     k = 1
  •     while k <= n:
  •         if n % k == 0:
  •             C = C + 1
  •         k = k + 1
  •     return C == 1

Ví dụ khi nhập n = 2, chương trình lại in ra Khong trung thuong dù 2 là số nguyên tố! Em hãy chỉ ra dòng lệnh gây lỗi, giải thích tại sao nó sai (so sánh với thuật toán đếm ước đã học ở bài prime(n)), rồi sửa lại chương trình cho đúng. Chương trình hoàn chỉnh đọc một số nguyên n từ bàn phím và in ra Trung thuong nếu n là số nguyên tố, ngược lại in Khong trung thuong.

Định dạng vào/ra: Input là một số nguyên n trên một dòng. Output là một dòng chữ.

InputOutputGiải thích
2Trung thuong2 chỉ có ước 1 trong khoảng 1..n-1 nên C=1, là số nguyên tố
1Khong trung thuong1 không có ước nào trong khoảng 1..0 nên C=0, không phải số nguyên tố
13Trung thuong13 là số nguyên tố
15Khong trung thuong15 = 3 x 5, có nhiều hơn 1 ước
#hàm#def#return#vòng lặp while#số nguyên tố#off-by-one#gỡ lỗi#category:tu_duy_phan_bien#difficulty:analyzing

Giáo viên giao bài này cho lớp, học sinh nộp bài trực tuyến và được chấm tự động.

Giáo viên đăng nhập để giao bài