1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include<stdio.h>
#include<math.h>
int main(){
int i,n,j,temp;
/* i:对n位数进行遍历;
n:n位数;
j:控制n位数的各个位的n次幂
item:每一位的 n次幂的和,如 1^3 + 5^3 + 3^3
*/
double item;
/* temp:暂存变量i,如153;防止后续的操作改变i值,从而无法判断i是否为水仙花数
使用double类型的原因:
math.h中的pow()返回值为double型;用int型存储会出现问题,例如n=3时解不全面
*/
printf("input n : ");
scanf("%d",&n);
if(n>=3&&n<=7){
/*
对n位数 10..00 ~ 99..99 遍历找出其中的水仙花数;
例如n=3,pow(10,n-1) == 100,pow(10,n) == 1000 ,则循环在100~999进行
*/
for(i=pow(10,n-1);i<pow(10,n);i++){
temp = i; //暂存n位数 i 的值
j = n; //控制逐位操作的次数
item = 0; //各个位的n次幂的和,如 1^3 + 5^3 + 3^3;
//需要对每个n位数进行判断,所以每次循环都要清零
//将各个位的n次幂相加
while(j>0){
item += pow(temp%10,n); //每次取出最低位,计算其n次幂,如153%10 == 3,3^3
temp /= 10; //将暂存的数除以10,即去除最低位,如153 -> 15
j--;
}
if(item == i) //判断是否为水仙花数
printf("%d is a daffodil number n",i);
}
}else{
printf("invalid valuen");
}
return 0;
}
相关知识
PTA所谓水仙花数是指一个m位数 输入一个3位数n,输出所有介于100至n之间的位数为3的水仙花数 求1到正整数n之间的偶数之和,输出结果后换行。
n位水仙花数
C语言:输出所有的水仙花数
python 水仙花数 水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。 例如:153=1×1×1+5×5×5+3×3×3。
C语言3位~7位水仙花数(加强版)
玫瑰花数 一个四位数等于各位数字的四次方之和,则为玫瑰花数。如:1634=1*1*1*1+6*6*6*6+3*3*3*3+4*4*4*4
c++中输出“水仙花数”
python练习 013 打印水仙花数
打印水仙花数
C语言之水仙花数
网址: 输出水仙花数。输入一个正整数(3=n=7),输出所有的n https://m.huajiangbk.com/newsview391246.html
上一篇: 水仙茶分为几种类型 水仙花的形态 |
下一篇: C++怎么判断一个数是水仙花数? |