def demo():
temp = []
for i in range(100, 1000):
a = i // 100 # 百位
b = i // 10 % 10 # 十位
c = i % 10 # 个位
if a ** 3 + b ** 3 + c ** 3 == i:
temp.append(str(i))
return ",".join(temp)
print("1000以内的水仙花数有:{}".format(demo()))
用C语言实现水仙花数:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j,k,n
printf("'water flower'number is:")
for(n=100n<1000n++)
{
i=n/100/*分解出百位*/
j=n/10%10/*分解出十位*/
k=n%10/*分解出个位*/
if(n==i*i*i+j*j*j+k*k*k)
{
printf("%-5d",n)
}
}
printf("\n")
return 0
}
求满足如下条件的3位正整数,它除以9的商等于它的个位数字的平方和。例如224,它除以9的商为24,它的每一位数(2、2和4)的平方和也是24。
算法思路:首先,我们用range函数遍历所有的3位数,按照range(x,y)函数的语法规则,要包含所有的3位整数100~999,range函数的参数x、y应该分别取值为100和1000,即range(100,1000),然后分别计算3位数的个位、十位和百位数。计算的方法可以参考下面代码的变量a、b和c的计算方法,然后再计算出它们的平方和,最后,比较每位数的平方和是否等于此数除以9的商,如果是就输出这个数。代码如下:
程序运行结果:
132
224
315
453
535
561
635
661
753
805
815