สมมติว่าเรามีตัวเลข n ต้องเช็คก่อนว่าจะทำออกมาเป็น a^b ได้หรือไม่
ดังนั้น หากอินพุตเท่ากับ 125 เอาต์พุตจะเป็น True เป็น 125 =5^3 ดังนั้น a =5 และ b =3
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ถ้า num เหมือนกับ 1 แล้ว:
- คืนค่าจริง
- สำหรับการเริ่มต้น i :=2 เมื่อ i * i <=num อัปเดต (เพิ่ม i ขึ้น 1) ทำ:
- val :=log(num) / log(i)
- ถ้า val - ส่วนจำนวนเต็มของ val มีค่าเกือบ 0 แล้ว:
- คืนค่าจริง
- คืนค่าเท็จ
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
#include<iostream> #include<cmath> using namespace std; bool solve(int num) { if (num == 1) return true; for (int i = 2; i * i <= num; i++) { double val = log(num) / log(i); if ((val - (int)val) < 0.00000001) return true; } return false; } int main() { int n = 125; cout << solve(n); }
อินพุต
125
ผลลัพธ์
1