ให้ด้วยตัวเลข 'n' และภารกิจคือการพิจารณาว่าจำนวนเต็มบวกที่กำหนดนั้นเป็น proth หรือไม่ และแสดงผลเป็นผลลัพธ์
จำนวน Proth คืออะไร
หมายเลข proth ถูกกำหนดโดย
$$N=k\cdot\:2^{n}+1$$
โดยที่ n เป็นจำนวนเต็มบวกและ k เป็นจำนวนเต็มบวกคี่
หมายเลข proth สองสามตัวแรกจะได้รับด้านล่าง -
3, 5, 9, 13, 17, 25, 33, 41, 49, 57, 65, 81, 97.......
ป้อนข้อมูล
number: 17
ผลผลิต
its a proth number
ป้อนข้อมูล
number: 18
ผลผลิต
its not a proth number
แนวทางที่ใช้ในโปรแกรมมีดังนี้
-
ใส่ตัวเลขเพื่อตรวจสอบสภาพ
-
ใช้สูตรที่กำหนดเพื่อตรวจสอบว่าเป็นเลข proth หรือไม่
-
หากเงื่อนไขเป็นจริงให้พิมพ์หมายเลข proth
-
ถ้าเงื่อนไขไม่ถือจริงก็ไม่ใช่เลข proth
อัลกอริทึม
Step 1→ declare function to calculate power of 2 bool isPower(int num) return (num && !(num & (num - 1))) Step 2→ Declare function to check if a number is a proth number or not bool isProth(int num) declare int k = 1 While (k < (num / k)) IF (num % k == 0) IF (isPower(num / k)) return true End Set k = k + 2 End End return false Step 3→ In main() Declare int num = 17 IF (isProth(num - 1)) Print "its a proth number" End Else Print "its not a proth number" End
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; //function to calculate power of 2 bool isPower(int num){ return (num && !(num & (num - 1))); } //function to check if a number is a proth number bool isProth(int num){ int k = 1; while (k < (num / k)){ if (num % k == 0){ if (isPower(num / k)) return true; } k = k + 2; } return false; } int main(){ int num = 17; if (isProth(num - 1)) cout << "its a proth number"; else cout << "its not a proth number"; return 0; }
ผลลัพธ์
หากรันโค้ดด้านบน มันจะสร้างผลลัพธ์ต่อไปนี้ -
its a proth number