HappyNumber

http://pc11.2ch.net/test/read.cgi/tech/1199515728/639
正整数a以上b以下のHappyNumberを求めるプログラムを作成せよ。
ただし、関数を使うこと。
HappyNumberとは、正整数nの各桁の数を2乗し、その合計を求め、
その合計の各桁の数を2乗し、またその合計を求める計算を繰り返したとき、
最終的に1となる正整数nのことをいう。

650 名前:デフォルトの名無しさん[sage] 投稿日:2008/01/12(土) 02:00:19
これ面白いな。
最終的には4を含むループにはまるか、1で終わるかのどっちかなんだな。
証明もできたがはじめて知ったよ。

#include<iostream>

bool IsHappyNumber( int n )
{
  while( 1 )
  {
    int sum = 0;
    while( n )
    {
      int i = n % 10;
      sum += i * i;
      n /= 10;
    }
    n = sum;
    if( n == 1 ) return true;
    if( n == 4 ) return false;
  }
}

int main( void )
{
  int a, b;
  std::cin >> a;
  std::cin >> b;

  if( a > 0 )
  {
    for( int i = a; i <= b; ++i )
    {
      if( IsHappyNumber(i) )
      {
        std::cout << i << std::endl;
      }
    }
  }
  return 0;
}

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2008年01月12日 14:50