光看代码理解,不上机,不调试 #include <iostream> using namespace std; const int rg[] = {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31}; const __int64 MAX64 = (unsigned __int64 (-1)) >> 1; const int rgSize = sizeof(rg) / sizeof(*rg); int main() { for (__int64 i = 1; i<MAX64; i++) { int hit = 0; int hit1 = -1; int hit2 = -1; for (int j = 0;(j < rgSize) && (hit <= 2); j++) { if ((i%rg[j])!=0) { hit++; if (hit == 1) { hit1= j; } else if (hit == 2) { hit2 = j; } else break; } } if ((hit == 2) && (hit1 + 1 == hit2)) { cout << "found " << i << endl; } } }