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

ค้นหาองค์ประกอบแรกใน AP ซึ่งมีหลายรายการของ Prime ใน Python


สมมุติว่าเรามีพจน์แรก (A) และผลต่างร่วม (d) ของอนุกรม AP และเรายังมีจำนวนเฉพาะ P ด้วย เราต้องหาตำแหน่งขององค์ประกอบแรก ใน AP ที่กำหนด ซึ่งเป็นผลคูณของจำนวนเฉพาะที่ระบุ P.

ดังนั้น หากอินพุตเป็น A =3, D =4, P =5 เอาต์พุตจะเป็น 3 เนื่องจากพจน์ที่สี่ของ AP ที่กำหนดคือผลคูณของจำนวนเฉพาะ 5 ดังนั้น เทอมแรก =3 เทอมที่สอง =3+4 =7, เทอมที่สาม =3+2*4 =11 และเทอมที่สี่ =3+3*4 =15.

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • กำหนดฟังก์ชัน get_pow() นี่จะใช้เวลา x, y, p

  • ตอบ :=1

  • x :=x mod p

  • ในขณะที่ y> 0 ทำ

    • ถ้า y และ 1 ไม่ใช่ศูนย์ ดังนั้น

      • ans :=(ans * x) mod p

    • y :=y/2

    • x :=(x * x) mod p

  • กลับมาอีกครั้ง

  • จากวิธีหลัก ให้ทำดังนี้ −

  • A :=ตัวดัดแปลง P

  • D :=D mod P

  • ถ้า A เท่ากับ 0 แล้ว

    • คืนค่า 0

  • มิฉะนั้นเมื่อ D เท่ากับ 0 แล้ว

    • กลับ -1

  • มิฉะนั้น

    • X :=get_pow(D, P - 2, P)

    • return(X *(P - A)) mod P

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

def get_pow(x, y, p) :
   ans = 1
   x = x % p
   while y > 0 :
      if y & 1 :
         ans = (ans * x) % p
      y = y >> 1
      x = (x * x) % p
   return ans
def get_nearest(A, D, P) :
   A %= P
   D %= P
   if A == 0 :
      return 0
   elif D == 0 :
      return -1
   else :
      X = get_pow(D, P - 2, P)
      return (X * (P - A)) % P

A = 3
D = 4
P = 5
print(get_nearest(A, D, P))

อินพุต

A = 3 D = 4 P = 5

ผลลัพธ์

3