寻找那些神奇的自幂数---C语言

❤❤❤详解版❤❤❤

1. 什么是自幂数

2. 各种自幂数的美妙名称

3. 代码实现自幂数的寻找(💖详解💖)

1.什么是自幂数 ?🤔

如果在一个固定的进制中,一个n位自然数等于自身各个数位上数字的n次幂之和,则称此数为自幂数。

例如:在十进制中,153是一个三位数,各个数位的3次幂之和为1^3+5^3+3^3=153,所以153是十进制中的自幂数。

2. 各种自幂数的✨美妙名称✨

一位自幂数:独身数

两位自幂数:没有

三位自幂数:水仙花数

四位自幂数:四叶玫瑰数

五位自幂数:五角星数

六位自幂数:六合数

七位自幂数:北斗七星数

八位自幂数:八仙数

九位自幂数:九九重阳数

十位自幂数:十全十美数 

3. 代码实现自幂数的🚗寻找

根据自幂数的定义,一个n位自然数等于自身各个数位上数字的n次幂之和的数是自幂数

1. 首先我们需要确定一个自然数的位数,参考代码:

这里我们利用函数来计算一个自然数的位次:


int count(int tmp)
{
	int cnt = 1;
	while (tmp /= 10)//每次除 10 取整为真就向前进一位
	{
		cnt++;
	}
	return cnt;//返回位次
}

 2. 计算 一个自然数的每一位次方并求和,参考代码:

我们在这里将要使用库函数 pow() 。pow( x , y ) 即计算 x 的 y 次方,其头文件为<math.h>。

while (tmp)//通过%10/10以次得到一个自然数的为一位对应的数字
	 {
		sum += pow(tmp % 10, cnt);//得到每个数字总位次的次方并求和
		tmp /= 10;
	 }

3. 判断一个数是否为自幂数

//3.判断
if (sum == i && i > 0)	
{
	printf("%d 是自幂数\n", i);
		
}

4. 接下来让我们将每一步综合到一起

//计算自幂数
#include<stdio.h>
#include<math.h>
int count(int tmp)
{
	int cnt = 1;
	while (tmp /= 10)//每次除 10 取整为真就向前进一位
	{
		cnt++;
	}
	return cnt;//返回位次
}
int main()
{
	int i = 0;
	int n = 0;
	printf("请输入要寻找的自幂数的最大位次:\n");
	scanf("%d", &n);
	for (i = 0;i <= n ;i++)
	{
		//判断 i 是否为自幂数
		int tmp = i;//保存 i 的值,防止在计算位次时将 i 的值覆盖掉
		int sum = 0;

		//1.计算 i 的位数
		int cnt = count(i);//进行函数调用

		//2.再计算 i 的每一位次方
		while (tmp)//通过%10/10以次得到一个自然数的为一位对应的数字
		{
			sum += (int)pow(tmp % 10, cnt);//得到每个数字总位次的次方并求和
			tmp /= 10;
		}

		//3.判断并打印自幂数
		if (sum == i&& i > 0 )
		{
			printf("%d 是自幂数\n", i);
		}
	}
	return 0;
}

为了保护小作者的电脑我们只计算到北斗七星数:

运行结果:

 最后,给每一个同学一个大大的赞

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值