コードライン "num ++"を "num + = 2520"に変更した場合、コードは正常に実行され、正しい答えが返されますが、なぜそれが実行されないのかを知りたいのですが、答えが見つかる前に2520の倍数でなければならないという事実を考えてください。なぜ私のコードがその変更なしで答えを正しく与えていないのかわかりません。私には、それは正しいようです。残念ながら、whileループは終了しません。プロジェクトオイラー#5 - なぜこのループは終了しませんか?
私は、要件が少しでも(9から8に)低下すると、whileループが終了するまで管理するため、正しい数字の長さと関係があります(232792560)。
long long int num = 1;
int div_counter = 1;
bool check = false;
while(!check)
{
for(int i = 2; i < 21; i++)
{
if(num % i == 0)
{
div_counter++;
}
}
if(div_counter == 20)
{
check = true;
}
else
{
num++;
div_counter = 0;
}
}
return num;
これらの数字のLCMとしてこの番号を直接構成しないでください.GCDを使用して既に含まれている要素を見つけるのはなぜですか? – LutzL
あなたは十分に長く待っていますか?たとえば、2520の変種が0.1秒で実行される場合、ステップ1の変種は252秒= 4.2分を必要とします。 10000の倍数であれば現在の 'num'をデバッグしようとしましたか? – LutzL