求0~100000的所有水仙花數——思路分析+原始碼

壞人也溫柔發表於2020-12-30

思路:
此題的關鍵在於只要知道判斷一個資料是否為水仙花數的方式,問題就迎刃而解。假定給定一個資料data,具體檢測方式如下:
1. 求取data是幾位數
2. 獲取data中每個位置上的資料,並對其進行立方求和
3. 對data中每個位上的資料立方求和完成後,在檢測其結果是否與data相等即可,
相等:則為水仙花數
否則:不是
具體實現參考以下程式碼。

int main()
{
	int i = 0;
	for(i=0; i<=99999; i++)
	{
		int count = 1;
		int tmp = i;
		int sum = 0;
		//判斷i是否為水仙花數
		//1. 求判斷數字的位數
		while(tmp/10)
		{
			count++;
			tmp = tmp/10;
		}
     
		//2. 計算每一位的次方和
		tmp = i;
		while(tmp)
		{
			sum += pow(tmp%10, count);
			tmp = tmp/10;
		}
     
		//3. 判斷
		if(sum == i)
			printf("%d ", i);
	}
	return 0;
}

相關文章