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.



#include <iostream>
using namespace std;

int power(int aint 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

My photo
Ercan Tomac
instagram.com/ercantomac