Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Here's a version that at least for 64 bit might be faster:

  bool isPerfect(uint64_t x) {
        int ctz = __builtin_ctzll(x);
        return ((0x40051056 >> ctz) & 1) && ((x >> ctz) + 1) == (uint64_t(1) << (ctz + 1));
  }


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: