Siêu nguyên tố (TS10LQĐ 2015)

Xem PDF

Điểm: 300 (p) Thời gian: 1.5s Bộ nhớ: 640M Input: bàn phím Output: màn hình

Một số nguyên dương \(n\) được gọi là một số siêu nguyên tố nếu \(n\) là số nguyên tố và khi ta
bỏ bao nhiêu chữ số tận cùng của \(n\) thì số tự nhiên mới tạo thành cũng là một số nguyên tố.

Ví dụ:

  • Số 317 là số siêu nguyên tố vì số 317 là số nguyên tố, số 31 (bỏ 1 chữ số tận cùng
    của 317) là số nguyên tố, số 3 (bỏ 2 chữ số tận cùng của 317) là số nguyên tố.
  • Số 61 không là số
    siêu nguyên tố vì số 6 (bỏ 1 chữ số tận cùng của 61) không là số nguyên tố.

Yêu cầu: Viết chương trình nhập vào từ bàn phím một số nguyên dương \(n\ (0 < n < 10^9)\)
in ra màn hình một từ khẳng định số \(n\) có phải là số siêu nguyên tố hay không.

Input

  • Số nguyên dương \(n\) nhập từ bàn phím (\(0 < n < 10^9\)).

Output

  • In ra màn hình một từ PHAI nếu \(n\) là số siêu nguyên tố; ngược lại, in ra màn
    hình một từ KHONG nếu \(n\) không phải là số siêu nguyên tố

Scoring

  • Subtask \(1\) (\(70\%\) số điểm): \(n\le 10^9\) theo đề chuẩn
  • Subtask \(2\) (\(30\%\) số điểm): \(n\le 10^{16}\) mở rộng

Example

Test 1

Input
317
Output
PHAI

Test 2

Input
61
Output
KHONG

Bình luận


  • -1
    kay    9:15 p.m. 28 Tháng 7, 2024

    import math
    a = int(input())

    kiểm tra số nguyên tố

    def z(x):
    if x <= 1:
    return False
    if x <= 3:
    return True
    if x % 2 == 0 or x % 3 == 0:
    return False
    i = 5
    while i * i <= x:
    if x % i == 0 or x % (i + 2) == 0:
    return False
    i += 6
    return True
    if not z(a):
    print("KHONG")
    else:
    # Kiểm tra các tiền tố của n
    b = str(a)
    c = True
    for i in range(len(b)):
    d = int(b[:len(b) - i])
    if not z(d):
    c = False
    break
    if c:
    print("PHAI")
    else:
    print("KHONG")
    mn ơi có cách nào rút gọn ko ạ =(((( bị quá tg


    • 0
      quangchinhtran    2:34 p.m. 13 Tháng 8, 2024

      dùng hàm snt và hàm kiểm tra số nguyen tố đi

      3 bình luận nữa