C语言-求100000以内的所有自幂数

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

1.什么叫自幂数?



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


例如:

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


在n进制中,所有小于n的正整数都为自幂数,比如2进制中1是自幂数,3进制中1和2都是自幂数,4进制中1,2和3都是自幂数…


2.思路:


判断i是否是自幂数

再计算i的每一位的n次方之和

判断

中1,2和3都是自幂数…


3.代码:



#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
int main()
{
    int i=0,temp1,count=1,sum=0;
    for (i = 1; i < 10000; i++)
    {
        temp1 = i;                 //千万不能之间用 i 去代入,不然会出错
        count = 1;
        sum = 0;
        while(temp1/=10)
        { 
            count++;               //count是计算 i 的位数
        }
        temp1 = i;
       while(temp1)
        {
            sum += pow(temp1 % 10, count);     //sum是计算每位数的n次方
            temp1 /= 10;
        }
        if (i == sum)
        {
            printf("%d ", i);
        }
    }
    return 0;
}

5b2fa03b02a74bf9bdbbf76085e84224.png




相关文章
|
1月前
|
C语言
C语言实例——1000以内的所有完数
【1月更文挑战第16天】C语言实例——1000以内的所有完数。
41 0
|
1月前
|
程序员 编译器 C语言
『C语言进阶』字符函数和内存函数(1)
『C语言进阶』字符函数和内存函数(1)
|
1月前
|
C语言 C++
『C语言进阶』字符函数和内存函数(2)
『C语言进阶』字符函数和内存函数(2)
|
8月前
|
C语言
c语言之两个数相加
c语言之两个数相加
|
1月前
|
C语言 C++
【C语言进阶】字符函数和内存函数 (一)
【C语言进阶】字符函数和内存函数 (一)
|
1月前
|
C语言
【C语言进阶】字符函数和内存函数(二)
【C语言进阶】字符函数和内存函数(二)
|
1月前
|
机器学习/深度学习 存储 C语言
用C语言轻松找出所有水仙花数
用C语言轻松找出所有水仙花数
用C语言轻松找出所有水仙花数
|
10月前
|
C语言
【C语言练习】 二进制中1的个数
【C语言练习】 二进制中1的个数
61 0
|
11月前
|
C语言
C语言:求两个数二进制中不同位的个数
思路: 总体思路: 把 m 异或 n 后,有几个相异就有几个1,再计算下二进制有几个1即可 (1). 编写函数:number_of_1() ,计算二进制中有几个1。 (2). 在主函数中,把 m ^ n (m 异或 n)的结果作为参数传给 number_of_1() 函数
C语言:求两个数二进制中不同位的个数
|
C语言
C语言 “水仙花数”(包懂)
C语言 “水仙花数”
429 0
C语言 “水仙花数”(包懂)