水仙花数C语言与python版

水仙花数

  • 就是 100-1000 以内的三位数,例如:153 = 111 + 555 + 333 这样的数叫做水仙花数。

C语言实现

  • 过程很简单,穷举,一个一个数字的循环试
// 水仙花数
#include <stdio.h>
#include <math.h>
int main()
{
    
    
	int b, s, g;
	for(int num = 100; num < 1000; num++)
	{
    
    
		b = num/100;
		s = num/10%10;
		g = num%10;
		// 使用计算幂的函数
		if (num == (pow(b, 3) + pow(s, 3) + pow(g, 3)))
		{
    
    
			printf("%5d\n", num);
		}
	}
	return 0;
}

python实现

  • 注意点是 python的数值需要加上 int() 进行类型转换, 因为python 除法得到的可能是浮点类型
# 水仙花数
for num in range(100, 1000):
    b = int(num/100)
    s = int(num/10)%10
    g = num%10
    if num == b**3 + s**3 + g**3:
        print("水仙花数: ", num)

生成器实现

  • 如前面的文章实现斐波那契数列,这里实现水仙花数
  • 另外,生成器实现真的是特别的方便! 我们就不在写 迭代器版本的了,生成器自动创建了 iter,next方法,实在是简单,简化。
def hua():
    for num in range(100, 1000):
        b = int(num/100)
        s = int(num/10)%10
        g = num%10
        if num == b**3 + s**3 + g**3:
            yield num


for i in hua():
    print(i)

结果:
153
370
371
407

猜你喜欢

转载自blog.csdn.net/pythonstrat/article/details/112739953