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

ตรวจสอบว่าตัวเลขเป็นตัวเลข Achilles หรือไม่ใน C++


แนวคิด

สำหรับจำนวนเต็มบวกที่กำหนด n ภารกิจคือการตรวจสอบว่า n เป็นจำนวนจุดอ่อนหรือไม่ เราต้องพิมพ์ 'YES' หาก N ถูกนับเป็นตัวเลข Achilles มิฉะนั้นให้พิมพ์ 'NO'

เลขจุดอ่อน:ในส่วนที่เกี่ยวกับคณิตศาสตร์ เลขจุดอ่อนถูกกำหนดให้เป็นตัวเลขที่มีพลัง (ตัวเลข N เรียกว่าเป็นตัวเลขที่มีกำลังมาก หากสังเกตว่าสำหรับตัวประกอบเฉพาะ p ทุกตัว p^2 จะหารด้วย) แต่ไม่ใช่พลังที่สมบูรณ์แบบ

ต่อไปนี้จะแสดงหมายเลขจุดอ่อนสองสามตัวแรก72, 108, 200, 288, 392, 432, 500, 648, 675, 800, 864, 968, 972, 1125

ป้อนข้อมูล − 108

ผลผลิต - ใช่

108 มีพลังเท่ากับ 6 และ 36 หารกันและไม่ใช่กำลังสองที่สมบูรณ์แบบ

ป้อนข้อมูล − 64

ผลผลิต − ไม่

คำอธิบาย − 64 เป็นตัวเลขที่ทรงพลังแต่เป็นพลังที่สมบูรณ์แบบ

แนวทาง

  • ตรวจสอบว่าตัวเลขที่กำหนด N เป็นจำนวนที่มีพลังหรือไม่

  • ตรวจสอบว่า N เป็นพลังที่สมบูรณ์แบบหรือไม่

  • ถ้า N มีพลังแต่ไม่สมบูรณ์แบบ N ก็คือเลขจุดอ่อน มิฉะนั้น แสดงว่าไม่ใช่

ตัวอย่าง

// CPP program to check Primorial Prime
#include <bits/stdc++.h>
using namespace std;
bool isPowerful1(int n1){
   while (n1 % 2 == 0) {
      int power1 = 0;
      while (n1 % 2 == 0) {
         n1 /= 2;
         power1++;
      }
      if (power1 == 1)
         return false;
      }
      for (int factor1 = 3; factor1 <= sqrt(n1); factor1 += 2) {
         int power1 = 0;
         while (n1 % factor1 == 0) {
            n1 = n1 / factor1;
            power1++;
         }
         if (power1 == 1)
            return false;
         }
         return (n1 == 1);
      }
      bool isPower1(int a1){
         if (a1 == 1)
            return true;
         for (int i1 = 2; i1 * i1 <= a1; i1++) {
            double val1 = log(a1) / log(i1);
            if ((val1 - (int)val1) < 0.00000001)
               return true;
            }
            return false;
         }
         bool isAchillesNumber1(int n1){
            if (isPowerful1(n1) && !isPower1(n1))
               return true;
            else
               return false;
         }
// Driver Program
int main(){
   int n1 = 108;
   if (isAchillesNumber1(n1))
      cout << "YES" << endl;
   else
      cout << "NO" << endl;
   n1 = 35;
   if (isAchillesNumber1(n1))
      cout << "YES" << endl;
   else
      cout << "NO" << endl;
   return 0;
}

ผลลัพธ์

YES
NO