
在这个问题中,我们得到一个正整数 N。我们的任务是创建一个程序来检查给定的数字是否是节俭的数字。
FRUGAL NUMBER – 其位数严格大于给定数字的质因数分解中的位数的数字。
示例 – 625,数字 625 的质因数是 54。
625 的位数是 3。
立即学习“C++免费学习笔记(深入)”;
54 是 2。
3 严格大于 2。因此,625 是一个节俭的数字。
前几个节俭的数字是 – 125, 128、243、256、343、512、625等
我们举个例子来理解一下问题
Input: n = 128Output: Frugal numberExplanation :Factors of 128 are 2^7, number of digits 2.The number of digits in 128 is 3.The number is a frugal number.
解决方案
该问题的一种解决方案是检查当前数字 n 是否为节俭数字。为此,我们将找到n的质因数并计算分解中的位数,然后计算该数的位数。如果数字中的位数大于因数中的数字,则该数字是节俭数字,否则不是。
示例
说明我们解决方案工作原理的程序
#include using namespace std;vector 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 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 primeNum = calcPrimeNum(n); long int num = n; long int factorDigitCount = 0; for (int i = 0; i factorDigitCount && factorDigitCount != 0);}int main(){ long int n = 625; cout<<"The number "<<n<<" is ";isFrugalNum(n)? cout<<"a Frugal numbern" : cout << "not a Frugal numbern"; return 0;}
输出
The number 625 is a Frugal number
以上就是在C++中,”Frugal Number”的翻译是”节俭数”的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1445034.html
微信扫一扫
支付宝扫一扫