求范围里的水仙花个数

水仙花数是指这样一种三位数,各个数位的立方和加起来等于这个数本身,如153=13+53+33,试编制一个程序,验证从键盘上输入的一个数是否为水仙花数。并且求出100~1000里面水仙花的个数,老司机们告诉我,用while语句

#include
using namespace std;
int main()
{
int gw,sw,bw,i=100;
while(i<1000)
{
gw = i % 10; //求个位数
sw = i / 10 % 10; //求十位数
bw = i / 100; //求百位数
if (i == gw * gw * gw + sw * sw * sw + bw * bw * bw) //判断是否是水仙花数
{
cout << i << " ";
}
i++; //自增运算
}

return 0;

}

img

供参考:

#include <stdio.h>
#include <math.h>
int isNarcissistic(int n)
{
    if (n <= 0) return 0;
    int p = (int)log10(n) + 1, sum = 0, t, N = n, k;
    while (N) {
        t = 1; k = p;
        while (k--) t *= N % 10;
        sum += t;
        N /= 10;
    }
    return sum == n;
}
int main()
{
    int n, i, cnt;
    scanf("%d", &n);
    if (isNarcissistic(n))
        printf("Yes\n");
    else
        printf("No\n");
    i = 100; cnt = 0;
    while (i < 1000) {
        if (isNarcissistic(i)) cnt++;
        i++;
    }
    printf("100-1000间共有水仙花数:%d", cnt);
    return 0;
}


#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    int a,b,c,i,cnt = 0,n;
    cin>>n;
    a = n/100;
    b = n/10%10;
    c = n%10;
    if (pow(a,3) + pow(b,3) + pow(c,3) == n ) cout<<"YES"<<endl;
    a = 0;
    b = 0;
    c = 0;
    for(i = 100;i<=999;i++)        
    {
        a = i/100;
        b = i/10%10;
        c = i%10;
        if( pow(a,3) + pow(b,3) + pow(c,3) == i )
        {
            cnt++;
        }
    }
    cout<<cnt;
    return 0;
}