4. 判斷一個整數是否爲水仙花數

題目

鍵盤輸入一個整數,判斷是否爲水仙花數

思路

首先應該知道何爲水仙花數:
水仙花數(Narcissistic number)也被稱爲超完全數字不變數(pluperfect digital invariant, PPDI)、自戀數、自冪數、阿姆斯壯數或阿姆斯特朗數(Armstrong number),水仙花數是指一個 3 位數,它的每個位上的數字的 3次冪之和等於它本身(例如:1^3 + 5^3+ 3^3 = 153)。

水仙花數就是每一位的三次方相加等於原整數。解題思路就是定義

瞎扯淡

水仙花數只是自冪數的一種,嚴格來說3位數的3次冪數才稱爲水仙花數。
附:其他位數的自冪數名字
一位自冪數:獨身數
兩位自冪數:沒有
三位自冪數:水仙花數
四位自冪數:四葉玫瑰數
五位自冪數:五角星數
六位自冪數:六合數
七位自冪數:北斗七星數
八位自冪數:八仙數
九位自冪數:九九重陽數
十位自冪數:十全十美數

程序

#include<stdio.h>
#include<stdlib.h>
#include<string.h>


int main() {
	int a;
	scanf("%d", &a);
	int sum = 0, digital;	
	int org = a;
	while (a) {
		digital = a % 10;
		sum = sum + digital * digital *digital;
		a /= 10;
	}

	if (sum == org) {
		printf("Yes\n");
	}
	else {
		printf("No\n");
	}
	return 0;
}

運行結果

在這裏插入圖片描述

判斷一個數字是否爲自冪數

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main() {
	int a;
	scanf("%d", &a);
	int sum = 0, digital, sumDigital = 0, subSum = 0, org = a, i = 0;

	while (a) {
		a /= 10;
		sumDigital++;
	}

	a = org;
	while (a) {
		digital = a % 10;
		subSum = 1;
		for (i = 0; i < sumDigital; ++i) {
			subSum *= digital;
		}
		sum += subSum;
		a /= 10;
	}

	if (sum == org) {
		printf("Yes\n");
	}
	else {
		printf("No\n");
	}
	return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章