我创建了一个函数来查找第一个X Happy Numbers.
幸福的数字由以下过程定义.从任何正整数开始,将数字替换为其数字的平方和,并重复该过程,直到数字等于1(它将保持不变),或者它在一个不包括1的循环中无休止地循环
我的问题是我怎么知道它在循环中无休止地循环?我目前正在做的是计算它通过Square Of Squares函数的次数,如果它> 10,它将返回0.这是我的代码..
C++
#include <iostream>
#include <cmath>
#include <cstdlib>
using namespace std;
int k, rep = 0;
int SumOfSq(int num) {
int total = 0;
while(num) {
int digit = num % 10;
num /= 10;
total += pow(digit,2);
}
return total;
}
bool Happy(int num) {
int temp = 0;
while(num != 1) {
if(k == rep) exit(1);
num = SumOfSq(num);
if(temp++ > 10) {
return 0; //Not happy
}
}
rep++;
return 1; //Happy
}
int main() {
cout << "How many Happy Numbers to find? ";
cin >> k;
for(int j = 1;;j++)
if(Happy(j)) cout << j << " ";
}
Run Code Online (Sandbox Code Playgroud)
如果我的代码有任何错误或需要改进的地方,也请告诉我.电流输出应该是正确的.
小智 5
来自维基上的快乐数字:
如果n很满意,那么它的序列变为1.否则,它在循环中结束:
4, 16, 37, 58, 89, 145, 42, 20, 4, ...
Run Code Online (Sandbox Code Playgroud)
所以,看看你是否已登陆其中一个数字,看看你是否处于不愉快的周期.
另一种方法是跟踪您所看到的数字,如果您计划在许多情况下旅行超过8个数字,这可能会更好.
归档时间: |
|
查看次数: |
5844 次 |
最近记录: |