#include<stdio.h>
int main()
{
int a = 0;
int v = 0;
int count = 0;
for (int i = 0; i <= 100000; i++)
{
int sz = 1;
int b = i;
//1.计算i有几位数字
while (b / 10)
{
sz++;
b = b / 10;
}
return 0;
}
#include<stdio.h>
int test(int v, int sz)
{
int r = 1;
int count=0;
int sum = 0;
for (int s = 1; s <= sz; s++)
{
r = r * v;
}
return r;
}
int main()
{
int a = 0;
int v = 0;
int count = 0;
for (int i = 0; i <= 100000; i++)
{
int sz = 1;
int b = i;
//1.计算i有几位数字
while (b / 10)
{
sz++;
b = b / 10;
}
//2.得到i的每一位数字,计算的n次方之和
int a = i;
int sum = 0;
while (a)
{
int v = a % 10;
//取出的数字进行相乘
count = test(v, sz);
sum = count + sum;
a = a / 10;
}
}
return 0;
}
方法二
#include<stdio.h>
方法2
#include<math.h>
int main()
{
int i = 0;
for ( i = 0; i <= 100000; i++)
{
int tmp = i;
int n = 1;
int sum = 0;
//1.计算i有几位数字
while (tmp / 10)
{
n++;
tmp /= 10;
}
//2.得到i的每一位数字,计算的n次方之和
tmp= i;
while(tmp)
{
sum += pow(tmp % 10, n);
tmp /= 10;
}
}
return 0;
}
4.判断是否与i相等
判断sum是否与i相等
方法一
//打印水仙花数
#include<stdio.h>
int test(int v, int sz)
{
int r = 1;
int count=0;
int sum = 0;
for (int s = 1; s <= sz; s++)
{
r = r * v;
}
return r;
}
int main()
{
int a = 0;
int v = 0;
int count = 0;
for (int i = 0; i <= 100000; i++)
{
int sz = 1;
int b = i;
//1.计算i有几位数字
while (b / 10)
{
sz++;
b = b / 10;
}
//2.得到i的每一位数字,计算的n次方之和
int a = i;
int sum = 0;
while (a)
{
int v = a % 10;
//取出的数字进行相乘
count = test(v, sz);
sum = count + sum;
a = a / 10;
}
//判断是否与i相等
if (sum == i)
{
printf("%d ", sum);
}
}
return 0;
}
方法二
#include<stdio.h>
方法2
#include<math.h>
int main()
{
int i = 0;
for ( i = 0; i <= 100000; i++)
{
int tmp = i;
int n = 1;
int sum = 0;
//1.计算i有几位数字
while (tmp / 10)
{
n++;
tmp /= 10;
}
//2.得到i的每一位数字,计算的n次方之和
tmp= i;
while(tmp)
{
sum += pow(tmp % 10, n);
tmp /= 10;
}
//判断是否与i相等
if (sum == i)
{
printf("%d ", i);
}
}
return 0;
}