#include<stdio.h>
int main()
{
int i=1, j=1, n,chushi=1;
scanf_s("%d", &n);
while (i < n)
{
chushi = chushi * 10;
i++;
}
int k = chushi;
while (k < chushi * 10)
{
int m = k;
int t, l, sum = 0;
t =m% 10;
m = k/ 10;
while (m> 0)
{
while (j < n)
{
t *= t;
j++;
}
sum += t;
}
if (sum ==k)
{
printf("%d\n", k);
}k++;
}
}
你输入的n值是啥?
t *= t; 这肯定是错的啊!!! 比如t=2,计算3次方,应该是2 * 2 * 2 = 8,但你这么写,第一次 t *= t 后,t=4,第二次 t *= t就是4 * 4 = 16了
我仅会点点python ,只会用python 代码呈现“算法逻辑”。
#!/sur/bin/nve python
# coding: utf-8
def is_narcissus(number):
num = number
c = num%10 # 个位数字。
num //= 10
b = num%10 # 十位数字。
num //= 10
a = num%10 # 百位数字。
if sum([i**3 for i in (a, b, c)]) == number:
print(f"{a}^3 + {b}^3 + {c}^3 = {number}")
return number
if __name__ == '__main__':
print(f"\n运算过程:\n{'':~^41}")
print(f"\n{'':~^41}\n所有的三位数“水仙花数”:\n{[i for i in range(100, 1000) if is_narcissus(i)]}\n")
VⅦ!
运行结果示例:
水仙花数有 153 370 371 407
说明:
(1)提示性文字输出格式:“水仙花数有”
(2)结果输出格式:"%5d"
#include<stdio.h>
int main()
{
int i, j, k, n;
printf("水仙花数有");
for (n = 100; n < 1000; n++)
{
i = n / 100;
j = (n - i * 100) / 10;
k = n % 10;
if (n == i * i * i + j * j * j + k * k * k)
printf("%5d", n);
}
return 0;
}