水仙花数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()
新手上路,希望大家提出自己的宝贵意见。谢谢大家!