日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

C++實(shí)現(xiàn)水仙花數(shù)判斷實(shí)例_C 語言

作者:Alkaid#3529 ? 更新時(shí)間: 2022-03-23 編程語言

前言

水仙花數(shù)(Narcissistic number)也被稱為超完全數(shù)字不變數(shù)(pluperfect digital invariant, PPDI)或阿姆斯特朗數(shù)(Armstrong number),是指一個(gè) 3 位數(shù),它的每個(gè)位上的數(shù)字的 3次冪之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。

找出指定范圍內(nèi)的所有水仙花數(shù)需要我們利用循環(huán)的相關(guān)知識(shí)解決,本文將從思路分析入手,帶大家逐步簡化問題,直到代碼實(shí)現(xiàn)。

一、思路分析

如果一個(gè)數(shù)是水仙花數(shù),那么它的每個(gè)位上的數(shù)字的 3次冪之和等于它本身,因此我們需要分離出它各個(gè)位置上的數(shù)字,并對(duì)他們的三次冪求和,與原數(shù)相等即可。

問題就簡化為了分離各個(gè)位置上的數(shù),對(duì)于百位,我們可以知道,因?yàn)閿?shù)據(jù)類型為 int 整型,因此原數(shù)除以100即為百位數(shù);對(duì)于十位,將原數(shù)模100后,除以10即可;對(duì)于個(gè)位,模10即可獲得。

到此,整體思路已經(jīng)明確,我們將其轉(zhuǎn)化為代碼。

二、代碼實(shí)現(xiàn)

1.水仙花函數(shù)

我們首先來寫一個(gè)函數(shù),這個(gè)函數(shù)的功能是判斷一個(gè)數(shù)是否為水仙花數(shù),如果是,返回真;否則,返回假。

代碼如下(示例):

/* Alkaid#3529 */

bool narcissus(int a)
{
	int sum = 0; // 記錄最終求和結(jié)果

	int x1 = a / 100; // 原數(shù)除以100即為百位
	int x2 = a % 100 / 10; // 原數(shù)模100后,除以10就是十位數(shù)
	int x3 = a % 10; // 模10的結(jié)果就是個(gè)位數(shù)

	// 對(duì)得到的各位數(shù)的三次冪求和
	sum = x1 * x1 * x1 + x2 * x2 * x2 + x3 * x3 * x3;

	// 判斷求和結(jié)果與原數(shù)是否相等
	if (sum == a)
		return 1;
	else
		return 0;
}

2.完整代碼

在現(xiàn)有函數(shù)基礎(chǔ)上,我們只需對(duì)所有三位數(shù)循環(huán)判斷,若為真,輸出;否則,跳過即可。

代碼如下(示例):

/* Alkaid#3529 */

#include<iostream>
using namespace std;

bool narcissus(int a);

int main()
{
	cout << "水仙花數(shù)有:  ";

	// 從100開始,逐個(gè)檢查所有三位數(shù)
	for (int i = 100; i < 1000; i++)
	{
		if (narcissus(i))
			cout << i << "  ";
	}

	return 0;
}

bool narcissus(int a)
{
	int sum = 0; // 記錄最終求和結(jié)果

	int x1 = a / 100; // 原數(shù)除以100即為百位
	int x2 = a % 100 / 10; // 原數(shù)模100后,除以10就是十位數(shù)
	int x3 = a % 10; // 模10的結(jié)果就是個(gè)位數(shù)

	// 對(duì)得到的各位數(shù)的三次冪求和
	sum = x1 * x1 * x1 + x2 * x2 * x2 + x3 * x3 * x3;

	// 判斷求和結(jié)果與原數(shù)是否相等
	if (sum == a)
		return 1;
	else
		return 0;
}
我們運(yùn)行一下程序,看看結(jié)果如何。

在這里插入圖片描述

經(jīng)檢驗(yàn),代碼運(yùn)行無誤,結(jié)果正確,可以放心復(fù)制粘貼。

總結(jié)

水仙花數(shù)的判斷是常見的基礎(chǔ)題型,除此之外,后續(xù)會(huì)陸續(xù)推出 C++ 的進(jìn)階題目,感興趣且想學(xué)習(xí)的話不妨點(diǎn)點(diǎn)關(guān)注,你的點(diǎn)贊是我更新的最大動(dòng)力哦!

原文鏈接:https://blog.csdn.net/qq_51661256/article/details/122312551

欄目分類
最近更新