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

ตรวจสอบว่าตัวเลขเป็นตัวเลขที่ผิดปกติหรือไม่ใน C++


ในที่นี้เราจะเห็นตัวเลขที่เป็นตัวเลขผิดปกติหรือไม่ มีการกล่าวถึงตัวเลขว่าไม่ปกติหากตัวประกอบเฉพาะที่ใหญ่ที่สุดของจำนวนนั้นมากกว่ารากที่สองของตัวเลขอย่างเคร่งครัด ตัวเลขที่ผิดปกติบางส่วน ได้แก่ 2, 3, 5, 6, 7, 10, 11, 13, 14, 15, 17, 19, 20, 21, 22, 23, 26, 28, 29, 31, 33, 34 , 35, 37, 38, 39, 41, 42, 43, 44, 46

ในการแก้ปัญหานี้ เราจะพยายามหาตัวประกอบเฉพาะที่ใหญ่ที่สุด จากนั้นตรวจสอบว่าตัวประกอบนั้นมากกว่ารากที่สองของตัวเลขหรือไม่ ถ้าใช่ แสดงว่าตัวเลขนั้นเป็นตัวเลขที่ผิดปกติ ไม่เช่นนั้นก็ไม่ใช่

ตัวอย่าง

#include <iostream>
#include <cmath>
using namespace std;
int largestPrimeFactor(int num) {
   int max_prime = -1;
   while (num % 2 == 0) { //remove all 2s from the number
      max_prime = 2;
      num >>= 1;
   }
   for (int i = 3; i <= sqrt(num); i += 2) {
      while (num % i == 0) {
         max_prime = i;
         num = num / i;
      }
   }
   if (num > 2)
   max_prime = num;
   return max_prime;
}
bool isUnusual(int num) {
   int largePrimeFactor = largestPrimeFactor(num);
   if (largePrimeFactor > sqrt(num)) {
      return true;
   } else {
      return false;
   }
}
int main() {
   int n = 14;
   if (isUnusual(n)) {
      cout << n << " is an unusual number";
   } else {
      cout << n << " is not an unusual number";
   }
}

ผลลัพธ์

14 is an unusual number