题目:求0~999之间的水仙花数
代码:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<stdlib.h>
#include<math.h>
#define m 3
#define n 999
int main() {
int i = 0;
printf("These are Narcissistic numbers:\n");
//遍历
for ( i = 0; i <= n; ++i) {
//求一个数是否是水仙花数
int sum = 0;
int temp = i;
while (temp !=0) {
sum = sum + pow(temp%10,m);
temp = temp / 10;
}
if (i == sum && sum !=0 && sum !=1 ) {
printf("%d\n ",i);
}
}
return 0;
}
运行结果:
扩充题目:求一定范围内的自幂数
代码:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<stdlib.h>
#include<math.h>
int main() {
int i = 0;
int n;
printf("请输入你想判断的自幂数的范围最大值:");
scanf("%d", &n);
printf("These are self numbers:\n");
//遍历
for ( i = 100; i <= n; ++i) {
int length = 0;
int temp = i;
//求一个数的长度来确定幂次
while (temp != 0) {
++length;
temp = temp / 10;
}
//判断一个数是否是自幂数
int sum = 0;
temp = i; //需要对temp进行重新赋值,temp经过上面的循环已经为0
while (temp !=0) {
sum = sum + pow(temp%10,length);
temp = temp / 10;
}
if (i == sum) {
printf("%d\n ",i);
}
}
return 0;
}
运行结果: