I don't think you understand the algorithm completely. That algorithm generates 65536 pubkeys and does this as binary in the method used when creating a normal btc wallet address. As a result of this 65536 pubkey, one of them will reduce the pubkey to 109 bits. Our main goal is to find the correct bit range. The algorithm performs the test from the test. The bit sequence is 65536, which is equivalent to 16 bits. The correct sequence of 16 bits is one in 65536. You can multiply this, but it will also increase your processing load. If you examine the bit by bit processes with the code you wrote instead of using ready-made libraries, you will see the result. In other words, the algorithm reduces 125-16=109 bits and 1 pubkey to 109 bits. 65536*65536 =2^32 , Within 2^32 bit addresses, that is, 4294967296 addresses, 1 of them is a pubkey reduced to 2^93 bits. Now, of course, for this 125th puzzle. Depending on your bsgs speed it may take some time to solve. The problem is not that the last digit is even or odd, but because it operates with 0 or 1, it doesn't matter if it's a single even, change the leading bit with the same bit order, you will get different results, so it cannot be solved with even or odd. It can be solved with bits in the correct order So my algorithm works, it outputs a little too many pubkey results.
Yes, your algorithm works!
Can you explain why it outputs only odd pubkey results and skips even ones?
For example, when dividing by 2, we get: 1,2,5,7 odd pubkeys, and 3,4,6 even pubkeys. The odd ones will be in the list your algorithm outputs, but the even ones won't.