C语言之打印自幂数(包括但不限于水仙花数)

个人主页(找往期文章包括但不限于本期文章中不懂的知识点):我要学编程(ಥ_ಥ)-CSDN博客

介绍:C语言之打印自幂数(包括但不限于水仙花数)_第1张图片

题目:求出0~100000之间的所有“自幂数”并输出。 

想要知道这个数是不是自幂数,就得先知道这个数有几位数,再通过每一位的乘以它所对应的权重的位数次方。求一个数有几位,可以通过不断地 / 10和%10,来统计。至于第二步,我们可以通过一个函数来实现pow函数。下面是这个函数的用法举例:C语言之打印自幂数(包括但不限于水仙花数)_第2张图片

C语言之打印自幂数(包括但不限于水仙花数)_第3张图片

#include 
#include 
int main()
{
	int i = 0;
	for (i = 0; i < 100000; i++)
	{
		double sum = 0;
		double count = 0;
		int tmp = i;
		while (i)//只要能进来,就说明这个i不等于0
		{
			count++;//统计位数
			i /= 10;
		}
		i = tmp;//i刚刚变了,要变回来
		int n = count;
		while (n)//当n等于0时,就意味着是对应的位数
		{
			sum += pow(i % 10, count);
			i /= 10;
			n--;
		}
		i = tmp;//i刚刚变了,要变回来
		if (sum == i)
		{
			printf("%d ", i);
		}
	}
	return 0;
}

你可能感兴趣的:(C语言,算法,c语言)