ここに問題があります。Project Euler #45
そして、ここに私が書いたコードがあります:
#include <iostream>
#include <math.h>
using namespace std;
bool ispent (long num){
long double x = (sqrt(24*num+1) + 1.0)/6.0;
if (floor(x)==x) return true;
else return false;
}
bool ishex (long num){
long double x = (sqrt(8*num+1) + 1.0)/4.0;
if (floor(x)==x) return true;
else return false;
}
int main(){
int i=286;
while(true){
long x = (i*(i+1))/2;
if((ispent(x)) && (ishex(x))){
cout << x;
break;
}
i++;
}
}
これにより、出力 40755 が得られますが、次の番号が必要です。考えられるバグは何ですか?