Euler 23的问题

时间:2018-01-24 06:41:07

标签: c++11

我已经开始解决欧拉的问题了,欧拉23中有一个错误让我烦恼。 问题是什么?

#include <iostream>
using namespace std;
int main() {
long long res=0;
for (int answer=1;answer<=28123;answer++){
bool tri=false;
if (answer%6==0 || answer%20==0) continue;
for (int i=12;i<=answer;i++){
  if (abs(answer-i)%20==0) tri=true;break;
}
if (!tri) res+=answer;
 }
 cout << res << endl;
 return 0;
 }

我的程序背后的逻辑是:每个丰富的数字可以被20或6整除,所以我看是否可以写一个数字,其中一个数字可被6整除,一个数字可被20整除。在代码的顶部:

if (answer%6==0 || answer%20==0) continue;

如果有一个可被20或6整除的数字,我继续使用continue。 问题是什么? 是因为我的解决方案吗?

1 个答案:

答案 0 :(得分:1)

该行的意图

if (abs(answer-i)%20==0) tri=true;break;

未在代码中正确表达。它相当于:

if (abs(answer-i)%20==0)
{
   tri=true;
}
break;

我怀疑这不是你的意思。它必须是:

if (abs(answer-i)%20==0)
{
   tri=true;
   break;
}