สมมติว่าเรามีจำนวนอาร์เรย์และค่าอื่น k เราต้องตรวจสอบว่าเป็นไปได้ที่จะถึงจุดสิ้นสุดของอาร์เรย์โดยดำเนินการเหล่านี้หรือไม่ Operation:Traverse nums และหากมีค่าที่ไม่ใช่ไพรม์ใด ๆ ให้ลดค่าของ k ลง 1 ตอนนี้ถ้าค่าใดเป็นจำนวนเฉพาะ แล้วเติมค่า k เป็นค่าเริ่มต้น
ดังนั้น หากอินพุตเป็น nums =[8, 5, 6, 7, 8], k =2 ผลลัพธ์จะเป็น True เนื่องจาก nums[0] ไม่ใช่จำนวนเฉพาะ ให้ k =1 แล้ว nums[1 ] เป็นจำนวนเฉพาะ ดังนั้น k =2 จากนั้น nums[2] ไม่ใช่จำนวนเฉพาะ ดังนั้น k =1 อีกครั้ง nums[3] เป็นจำนวนเฉพาะ ดังนั้น k =2 และสุดท้าย nums[4] ไม่ใช่จำนวนเฉพาะ และ k =1 และในที่สุดเราก็ได้ ดัชนี
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- อุณหภูมิ :=k
- สำหรับฉันในช่วง 0 ถึงขนาดของ arr - 1 ทำ
- ถ้า arr[i] เป็นจำนวนเฉพาะ แล้ว
- k :=อุณหภูมิ
- มิฉะนั้น
- k :=k - 1
- ถ้า k <=0 และฉัน <ขนาดของ arr - 1 และ arr[i + 1] ไม่ใช่จำนวนเฉพาะ ดังนั้น
- คืนค่าเท็จ
- ถ้า arr[i] เป็นจำนวนเฉพาะ แล้ว
- คืนค่า True
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
โค้ดตัวอย่าง
def isPrime(num): if num > 1: for i in range(2, num): if num % i == 0: return False return True return False def solve(arr,k): temp = k for i in range(len(arr)): if isPrime(arr[i]): k = temp else: k -= 1 if k <= 0 and i < (len(arr) - 1) and isPrime(arr[i + 1]) == False: return False return True nums = [8, 5, 6, 7, 8] k = 2 print(solve(nums, k))
อินพุต
[8, 5, 6, 7, 8], 2
ผลลัพธ์
True