C语言水仙花数
求助,水仙花数的代码{:10_266:} 为什么会循环永远打印1{:10_266:}#include <stdio.h>
#include <math.h>
void flower(int n);
int main(void) {
int n;
scanf("%d", &n);
flower(n);
return 0;
}
void flower(int n) {
int i, j, k, sum, temp;
for (i = pow(10, n - 1); i < pow(10, n); i ++) {
sum = 0;
k = i;
temp = i;
while (temp) {
j = temp % 10;
sum += pow(j, n);
temp = temp / 10;
}
if (sum == k) {
printf("%d\n", sum);
}
}
}
试试,用math.h里的pow,pow(5,3)=124,所以自己写了个整数幂
#include <stdio.h>
//#include <math.h>
void flower(int n);
int pow(int a,int n)
{
if(0==n)return 1;
return a*pow(a,n-1);
}
int main(void) {
int n;
scanf("%d", &n);
flower(n);
return 0;
}
void flower(int n) {
int i, j, k, sum, temp;
for (i = pow(10, n - 1); i < pow(10, n); i ++) {
sum = 0;
k = i;
temp = i;
while (temp) {
j = temp % 10;
sum += pow(j, n);
temp = temp / 10;
}
if (sum == k) {
printf("%d\n", sum);
}
}
}
这里我想的是sum表示各个位数的和,j是最后一位数,temp、k是用来与i区分的,防止改变i的值 jhq999 发表于 2023-3-29 23:22
试试,用math.h里的pow,pow(5,3)=124,所以自己写了个整数幂
!!!可以了,但请问大佬为什么<math.h>的pow运行速度这么慢而且还算不对呢? 陈落轩 发表于 2023-3-30 14:01
!!!可以了,但请问大佬为什么的pow运行速度这么慢而且还算不对呢?
慢不知道原因,不正确是因为它是浮点运算,强制转换后向下取整
页:
[1]