python:水仙花数

水仙花数python编写

水仙花数是各类编程语言学习的必经之路,对水仙花数的编写也变得极为重要。

水仙花数的定义:
水仙花数:是一个三位数,各个位数上的立方和等于其本身。
拿最小的水仙花数153来说:就是  1^3+5^3+3^3 = 153
难点分析如何才能够把各个数单独拿出来?

设数为 i

  1. 百位上的数:
    百位上的数可以采用整除的形式来完成那百位就等于 i//100
    # 此处必须使用 ‘//’ 不能够只用**‘/’**在python中有除和整除的区分。
  2. 把百位的数除掉后剩下来的数作为一个新的整体假设为Numerical
    而Numerical = 1%100
  3. 十位的值就等于Numerica//10
  4. 个位的值就等于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基础函数及代码(一)

新手上路,希望大家提出自己的宝贵意见。谢谢大家!

发布了4 篇原创文章 · 获赞 5 · 访问量 293

猜你喜欢

转载自blog.csdn.net/weixin_45623093/article/details/104672513