Dalam C++, terjemahan 'Nombor Jimat' ialah 'nombor jimat'

王林
Lepaskan: 2023-09-12 10:53:02
ke hadapan
1052 orang telah melayarinya

在C++中,"Frugal Number"的翻译是"节俭数"

Dalam masalah ini, kita mendapat integer positif N. Tugas kami adalah untuk mencipta program yang menyemak sama ada nombor yang diberikan adalah nombor yang jimat.

NOMBOR JIMAT - Nombor yang digitnya lebih besar daripada bilangan digit dalam pemfaktoran perdana bagi nombor yang diberikan.

Contoh - 625, faktor perdana bagi nombor 625 ialah 54.

Bilangan digit dalam 625 ialah 3.

54 ialah 2.

3 adalah lebih besar daripada 2. Oleh itu, 625 adalah nombor yang menjimatkan. . adalah untuk menyemak sama ada nombor semasa n ialah nombor parsimoni. Untuk melakukan ini, kita akan mencari faktor perdana n dan mengira bilangan digit dalam pemfaktoran, kemudian mengira bilangan digit dalam nombor itu. Jika bilangan digit dalam nombor lebih besar daripada bilangan digit dalam faktor, maka nombor itu adalah nombor parsimoni, jika tidak, ia tidak.

ContohProgram yang menggambarkan cara penyelesaian kami berfungsi

Input: n = 128
Output: Frugal number
Explanation :
Factors of 128 are 2^7, number of digits 2.
The number of digits in 128 is 3.
The number is a frugal number.
Salin selepas log masuk

Output

#include <bits/stdc++.h>
using namespace std;

vector<long int> calcPrimeNum(long int n){

   bool primeNos[n + 1];
   memset(primeNos, true, sizeof(primeNos));
   for (int i = 2; i * i <= n; i++) {
      if (primeNos[i] == true) {
         for (int j = i * 2; j <= n; j += i)
            primeNos[j] = false;
      }
   }
   vector<long int> allPrimeNumbers;
   for (int i = 2; i < n; i++)
      if (primeNos[i])
         allPrimeNumbers.push_back(i);
   return allPrimeNumbers;
}
int countNumDigits(long int n){

   long long int num = n;
   int digitCount = 0;
   while (num != 0) {
      num = num / 10;
      digitCount++;
   }
   return digitCount;
}
bool isFrugalNum(long int n){

   vector<long int> primeNum = calcPrimeNum(n);
   long int num = n;
   long int factorDigitCount = 0;
   for (int i = 0; i < primeNum.size(); i++) {
      if (num % primeNum[i] == 0) {
         long int k = 0;
         while (num % primeNum[i] == 0) {
            num = num / primeNum[i];
            k++;
         }
         if (k == 1)
            factorDigitCount = factorDigitCount + countNumDigits(primeNum[i]);
         else if (k != 1)
            factorDigitCount = factorDigitCount + countNumDigits(primeNum[i]) +                               countNumDigits(k);
      }
   }
   return (countNumDigits(n) > factorDigitCount && factorDigitCount != 0);
}
int main(){

   long int n = 625;
   cout<<"The number "<<n<<" is ";isFrugalNum(n)? cout<<"a Frugal number\n" : cout << "not a Frugal number\n";
   return 0;
}
Salin selepas log masuk

Atas ialah kandungan terperinci Dalam C++, terjemahan 'Nombor Jimat' ialah 'nombor jimat'. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan