C++ でProject Euler Problem 14を完成させようとしていますが、正直に行き詰まっています。現在、問題を実行すると、これまでのところ、最大カウントの数: 155 のカウントを持つ 113370 でスタックします。これまでのところ、最大カウントの数ですが、i 値を 113371 以上に変更しようとすると、機能します。何が起こっている??
質問は:
次の反復シーケンスは、正の整数のセットに対して定義されます: n → n/2 (n は偶数) n → 3n + 1 (n は奇数)
上記のルールを使用して 13 から開始すると、次のシーケンスが生成されます。
13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1 このシーケンス (13 で始まり 1 で終わる) には 10 個の項が含まれていることがわかります。まだ証明されていませんが (コラッツ問題)、開始数はすべて 1 で終わると考えられています。
#include<stdio.h>
int main() {
int limit = 1000000;
int highNum, number, i;
int highCount = 0;
int count = 0;
for( number = 13; number <= 1000000; number++ )
{
i = number;
while( i != 1 ) {
if (( i % 2 ) != 0 ) {
i = ( i * 3 ) + 1;
count++;
}
else {
count++;
i /= 2;
}
}
count++;
printf( "So Far: the number with the highest count: %d with the count of %d\n",
number, count );
if( highCount < count ) {
highCount = count;
highNum = number;
}
count = 0;
//break;
}
printf( "The number with the highest count: %d with the count of %d\n",
highNum, highCount );
}