Wagstaff Prime: จำนวนเฉพาะรูปแบบ (2^q + 1)/3 โดย q เป็น Odd Prime
ตัวอย่าง
n = 683 → True เพราะ 683 = (2^11 + 1)/3, q=11 (Odd Prime)
อัลกอริทึม
- ตรวจสอบ n เป็น Prime
- ตรวจสอบ (n*3 - 1) เป็น Power of 2 (เพราะ n = (2^q+1)/3 → 3n-1 = 2^q)
- ทั้งคู่ True → Wagstaff Prime
โค้ดตัวอย่าง
def isPrime(num):
if num > 1:
for i in range(2, num):
if num % i == 0:
return False
return True
return False
def power_of_two(num):
return num and not (num & (num - 1))
def solve(num):
if isPrime(num) and power_of_two(num * 3 - 1):
return True
return False
n = 683
print(solve(n))
Input / Output
Input: 683 Output: True