Happy numbers | Rosetta Code | #17
URL to the problem page: http://rosettacode.org/wiki/Happy_numbers
A happy number is defined by the following process:
Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1.
Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers.
Find and print the first 8 happy numbers.
A happy number is defined by the following process:
Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1.
Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers.
Find and print the first 8 happy numbers.
#include <iostream>
using namespace std;
int power(int a, int b) {
int result = 1;
for (int i = 0; i < b; i++) {
result *= a;
}
return result;
}
int main()
{
int number, number2, cnt = 0, digitnumber;
cout << "First 8 happy numbers are:" << endl;
for (int i = 1; cnt < 8; i++) {
number = i;
while (number != 89) {
digitnumber = 1;
number2 = number;
while (number2 >= 10) {
number2 /= 10;
digitnumber++;
}
number2 = 0;
for (int j = digitnumber; j > 0; j--) {
number2 += power(((number % power(10, j)) / (power(10, (j - 1)))), 2);
}
number = number2;
if (number == 1) {
cout << i << endl;
cnt++;
break;
}
}
}
return 0;
}
Comments
Post a Comment