「C++の宿題/HappyNumber」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
**HappyNumber
http://pc11.2ch.net/test/read.cgi/tech/1199515728/639
正整数a以上b以下のHappyNumberを求めるプログラムを作成せよ。
ただし、関数を使うこと。
HappyNumberとは、正整数nの各桁の数を2乗し、その合計を求め、
その合計の各桁の数を2乗し、またその合計を求める計算を繰り返したとき、
最終的に1となる正整数nのことをいう。
参考:http://pc11.2ch.net/test/read.cgi/tech/1199515728/650
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;
}
**HappyNumber
http://pc11.2ch.net/test/read.cgi/tech/1199515728/639
正整数a以上b以下のHappyNumberを求めるプログラムを作成せよ。
ただし、関数を使うこと。
HappyNumberとは、正整数nの各桁の数を2乗し、その合計を求め、
その合計の各桁の数を2乗し、またその合計を求める計算を繰り返したとき、
最終的に1となる正整数nのことをいう。
参考:http://pc11.2ch.net/test/read.cgi/tech/1199515728/650
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;
}