ホームページ > バックエンド開発 > C++ > C++ では、「Frugal Number」は「倹約数」と訳されます。

C++ では、「Frugal Number」は「倹約数」と訳されます。

王林
リリース: 2023-09-12 10:53:02
転載
1060 人が閲覧しました

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

この問題では、正の整数 N を取得します。私たちの仕事は、指定された数字が倹約的な数字であるかどうかをチェックするプログラムを作成することです。

FRUGAL NUMBER - 指定された数値の素因数分解の桁数より厳密に大きい数値。

- 625。数値 625 の素因数は 54 です。

625 の桁数は 3 です。

54 は 2 です。

3 は厳密に 2 より大きくなります。したがって、625 は倹約的な数字です。

最初のいくつかの質素な数字は - 125、128、243、256、343、512、625 などです。

理解するために例を見てみましょう。問題

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.
ログイン後にコピー

解決策

この問題に対する 1 つの解決策は、現在の数値 n が倹約的な数値であるかどうかを確認することです。これを行うには、n の素因数を見つけて因数分解の桁数を数え、その数値の桁数を計算します。数値の桁数が因数の桁数より大きい場合、その数値は倹約数と呼ばれます。そうでない場合は、そうではありません。

ソリューションがどのように機能するかを示すプログラム< /p>

#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;
}
ログイン後にコピー

出力

The number 625 is a Frugal number
ログイン後にコピー

以上がC++ では、「Frugal Number」は「倹約数」と訳されます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート