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

ค้นหาว่า n สามารถเขียนเป็นผลคูณของตัวเลข k ใน C++ . ได้หรือไม่


สมมุติว่าเรามีเลข N เรามีเลข k อีกตัว เราต้องตรวจสอบตัวเลขที่สามารถแสดงโดยใช้ตัวเลข k ได้หรือไม่ สมมติว่าตัวเลข 54 และ k =3 ก็จะพิมพ์ตัวเลขเช่น [2, 3, 9] หากไม่สามารถแสดงได้ก็ให้พิมพ์ออกมา

ในการแก้ปัญหานี้ เราจะหาตัวประกอบเฉพาะของ N ทั้งหมด และเก็บไว้ในเวกเตอร์ จากนั้นเพื่อหาจำนวน k ที่มากกว่า 1 เราจะตรวจสอบว่าขนาดของเวกเตอร์มากกว่า k หรือไม่ หากขนาดน้อยกว่า k ให้คืนค่า -1 มิฉะนั้นจะพิมพ์ตัวประกอบ k-1 ตัวแรกและตัวประกอบสุดท้ายจะเป็นผลคูณของจำนวนที่เหลือทั้งหมด

ตัวอย่าง

#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
   int getKFactors(int n, int k){
   int i;
   vector<int> vec;
   while(n % 2 == 0){
      vec.push_back(2);
      n = n/2; //reduce n by dividing this by 2
   }
   for(i = 3; i <= sqrt(n); i=i+2){ //i will increase by 2, to get only odd numbers
      while(n % i == 0){
         n = n/i;
         vec.push_back(i);
      }
   }
   if(n > 2){
      vec.push_back(n);
   }
   if(vec.size() < k){
      cout << "Cannot be represented";
         return -1;
   }
   for (int i=0; i<k-1; i++)
   cout << vec[i] << ", ";
   int prod = 1;
   for (int i=k-1; i<vec.size(); i++)
   prod = prod*vec[i];
   cout << prod << endl;
}
int main() {
   int n = 54, k = 3;
   getKFactors(n, k);
}

ผลลัพธ์

2, 3, 9