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;
}
為了保護小作者的電腦我們只計算到北斗七星數:
運行結果:

最后,給每一個同學一個大大的贊

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/292778.html
標籤:其他
