水仙花数python编写
水仙花数是各类编程语言学习的必经之路,对水仙花数的编写也变得极为重要。
水仙花数的定义:
水仙花数:是一个三位数,各个位数上的立方和等于其本身。
拿最小的水仙花数153来说:就是 1^3+5^3+3^3 = 153
难点分析如何才能够把各个数单独拿出来?
设数为 i
- 百位上的数:
百位上的数可以采用整除的形式来完成那百位就等于 i//100
# 此处必须使用 ‘//’ 不能够只用**‘/’**在python中有除和整除的区分。 - 把百位的数除掉后剩下来的数作为一个新的整体假设为Numerical
而Numerical = 1%100 - 十位的值就等于Numerica//10
- 个位的值就等于Numerical%10
现在把这个三位数拆开来了剩下来的就极为简单了:
下面是代码:
#Narcissistic number(水仙花数)
print("所有三位数中的水仙花数如下所示:")
SingleDigit = TenDigits = Hundred = Surplus = sum = 0
for i in range(100,1000): #用range函数循环100到999【注1】
Hundred = i // 100 #计算百位
Surplus = i % 100 #上文解释里面的Numerical
TenDigits = Surplus // 10 #计算十位
SingleDigit = Surplus % 10 #计算个位
if i == (( Hundred ** 3 ) + ( TenDigits ** 3 ) +( SingleDigit ** 3 )):
sum += 1
print(i) #输出水仙花数
print("水仙花数共有%s个"%sum) #输出水仙花数的个数
#运行结果
所有三位数中的水仙花数如下所示:
153
370
371
407
水仙花数共有4个
下面的是C语言的代码,大家可以用于比较:
#include<stdio.h>
mian()
{
int a,b,c,d,e;
for(a=100;a<1000;a++)
{
b=a/100;
c=a%100;
d=c/10;
e=c%10;
if(a=c*c*c+d*d*d+e*e*e)
printf("水仙花数有:%5d\n",a);
}
}
#结果
水仙花数有 153 370 371 407
【注1】:可以查看下面文章中range()
python基础函数及代码(一)
新手上路,希望大家提出自己的宝贵意见。谢谢大家!
来源:CSDN
作者:叁岁学编程
链接:https://blog.csdn.net/weixin_45623093/article/details/104672513