赞
踩
定义:水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。
这里我们认为n位数中,只要每位的n次方等于该数,该数便是一个水仙花数。
求解思路:1.由于不知道有几位数,所以首先我们先求出n位数确定的位数
2.在求余算出n位数的余数之后,利用pow(m,n)求m的n次方函数算出每位数的n次方
3.将每位数的n次方相加,判断是否等于该数;如果相等,则是水仙花数,否则不是
- //水仙花数:n位数每位数的n次方等于该数
- #define _CRT_SECURE_NO_WARNINGS 1
- #include <stdio.h>
- #include <windows.h>
- #include <math.h>
- int main()
- {
- int i = 1;
- //求1到10000的水仙花数
- for (i = 1; i <= 10000; i++)
- {
- int count = 1; //水仙花数至少是一位
- int tmp = i;
- int sum = 0;
- //1.判断位数
- while (tmp / 10)
- {
- count++;
- tmp = tmp / 10;
- }
- tmp = i; //while循环后已改变tmp值,所以tmp需要重新被赋值
- //2.求和
- while (tmp) //保证最高位的n次方不被丢掉
- {
- sum += pow(tmp % 10, count); //pow(float x,float y):求次方函数(x的y次方)
- tmp = tmp / 10;
- }
- if (i == sum)
- {
- printf("%d ", i);
- }
- }
- system("pause");
- return 0;
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。