Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบว่าตัวเลขที่เล็กที่สุดจากหลักที่กำหนด มีหลักแรกและหลักสุดท้ายเป็นจำนวนเฉพาะ ใน Python


ปัญหา

ให้อาร์เรย์ของหลัก (digits) สร้างตัวเลขที่เล็กที่สุดได้ แล้วตรวจสอบว่าตัวเลขที่รวมจากหลักแรกและหลักสุดท้าย (ทั้งสองลำดับ) เป็นจำนวนเฉพาะหรือไม่

ตัวอย่าง

digits = [5,2,1,7] → ตัวเลขน้อยที่สุด = 1257
หลักแรก+หลัง = 17 (เฉพาะ), หลัง+แรก = 71 (เฉพาะ) → คืนค่า (1257, 17, 71)

แนวคิดการแก้ปัญหา

  1. นับความถี่ของแต่ละหลัก (0-9)
  2. สร้างตัวเลขโดยเรียงจาก 0 ถึง 9
  3. สร้างตัวเลข 2 หลักจาก first+last และ last+first
  4. ตรวจสอบความเป็นเฉพาะของทั้งคู่

โค้ดตัวอย่าง

from collections import Counter

def is_prime(num):
    if num < 2:
        return False
    for i in range(2, int(num**0.5)+1):
        if num % i == 0:
            return False
    return True

def solve(arr):
    freq = Counter(arr)
    number = ''.join(str(d) * freq[d] for d in range(10))
    first_last = int(number[0] + number[-1])
    last_first = int(number[-1] + number[0])
    prime_fl = is_prime(first_last)
    prime_lf = is_prime(last_first)
    if prime_fl and prime_lf:
        return int(number), first_last, last_first
    elif prime_fl:
        return int(number), first_last
    elif prime_lf:
        return int(number), last_first
    return False

print(solve([5, 2, 1, 7]))  # (1257, 17, 71)

อินพุต / เอาต์พุต

Input:  [5,2,1,7]
Output: (1257, 17, 71)