水仙花为什么输出了100-999的全部数字还多出来1002

#include
using namespace std;
int main() {

int numb = 99, numb1, numb2 , numb3 ;
while (numb <1000)
{
    do
    {
        numb++;
        numb1 = numb / 100;
        numb2 = numb / 10 % 10;
        numb3 = numb / 1 % 10 % 10;

    } while ( numb1 * numb1 * numb1 + numb2 * numb2 * numb2 + numb3 * numb3 * numb3 == numb);
        cout << numb << endl; 
}

return 0;

}

do循环是先执行,后判断,因此超出了。

int main() {
    int numb = 100, numb1, numb2 , numb3 ;
    
    numb1=numb2=numb3=1;
    
    while (numb <1000)
    {        
        while ( numb1 * numb1 * numb1 + numb2 * numb2 * numb2 + numb3 * numb3 * numb3 == numb);
        {            
            numb1 = numb / 100;
            numb2 = numb / 10 % 10;
            numb3 = numb / 1 % 10 % 10;
        } 
        cout << numb << endl; 
        numb++;
    }
    return 0;
}