C# 水仙花数

using System;
using System.Collections.Generic;
using System.Text;

namespace NarcissusNumber
{
class Program
{
public static void Main(string[] args)
{
int a;
string s;
do
{
Console.WriteLine(
"3----找出三位数所有的水仙花数!");
Console.WriteLine(
"4----找出四位数所有的水仙花数!");
Console.WriteLine(
"5----找出五位数所有的水仙花数!");
Console.WriteLine(
"34---你选择找出三、四位数的水仙花数!");
Console.WriteLine(
"45---你选择找出四、五位数的水仙花数!");
Console.WriteLine(
"35---你选择找出三、四、五位数的水仙花数!");
Console.WriteLine(
"0----退出");
Console.Write(
"请选择操作(0,3,4,5, 34, 45, 35):");
s
= Console.ReadLine();
a
= int.Parse(s);
switch (a)
{
case 0:Console.WriteLine("你选择退出!");
break;
case 3:Console.WriteLine("你选择找出三位数的水仙花数!");
Funtion(a);
break;
case 4:Console.WriteLine("你选择找出四位数的水仙花数!");
Funtion(a);
break;
case 5:Console.WriteLine("你选择找出五位数的水仙花数!");
Funtion(a);
break;
case 34: Console.WriteLine("你选择找出三、四位数的水仙花数!");
Funtion(a);
break;
case 45: Console.WriteLine("你选择找出四、五位数的水仙花数!");
Funtion(a);
break;
case 35: Console.WriteLine("你选择找出三、四、五位数的水仙花数!");
Funtion(a);
break;
default: Console.WriteLine("你的输入是不合理的!请重先选择!");
break;
}
Console.WriteLine();
// Console.Clear(); /*清屏*/
} while (a!=0);
}
/*******************输出水仙花数的算法*******************************/
static int Funtion(int s)
{
int i;
int j;
int k;
int n;
int m;
int l;
if (s==3) /*输出100-999的水仙花数*/
{
for(n=100;n<999;n++)
{
i
= n / 100;
j
= n / 10 - i * 10;
k
= n % 10;
if (n==Recursion(i,s) + Recursion(j,s) + Recursion(k,s))
Console.WriteLine(n);
}
}
else if (s == 4) /*输出1000-9999的水仙花数*/
{
for (n = 1000; n <= 9999; n++)
{
i
= n / 1000;
j
= n / 100 - i * 10;
k
= n / 10 - i * 100 - j * 10;
l
= n % 10;
if (n == Recursion(i, s) + Recursion(j, s) + Recursion(k, s) + Recursion(l, s))
Console.WriteLine(n);
}
}
else if(s==5) /*输出10000-99999的水仙花数*/
{
for (n = 10000; n <= 99999; n++)
{
i
= n / 10000;
j
= n / 1000 - i * 10;
k
= n / 100 - i * 100 - j * 10;
l
= n / 10 - i * 1000 - j * 100 - k * 10;
m
= n % 10;
if (n == Recursion(i, s) + Recursion(j, s) + Recursion(k, s) + Recursion(l, s) + Recursion(m, s))
Console.WriteLine(n);
}
}
else if (s ==34) /*输出100-9999的水仙花数*/
{
for (n = 100; n <= 9999; n++)
{
i
= n / 1000;
j
= n / 100 - i * 10;
k
= n / 10 - i * 100 - j * 10;
l
= n % 10;
if (i != 0 && n==Recursion(i, 4) + Recursion(j, 4) + Recursion(k, 4) + Recursion(l, 4))
Console.WriteLine(n);
if (n== Recursion(j, 3) + Recursion(k, 3) + Recursion(l, 3))
Console.WriteLine(n);
}
}
else if(s == 45) /*输出1000-9999的水仙花水*/
{
for (n = 1000; n <= 99999; n++)
{
i
= n / 10000;
j
= n / 1000 - i * 10;
k
= n / 100 - i * 100 - j * 10;
l
= n / 10 - i * 1000 - j * 100 - k * 10;
m
= n % 10;
if (i != 0 && n == Recursion(i, 5) + Recursion(j, 5) + Recursion(k, 5) + Recursion(l, 5) + Recursion(m, 5))
Console.WriteLine(n);
if (n == Recursion(j, 4) + Recursion(k, 4) + Recursion(l, 4) + Recursion(m, 4))
Console.WriteLine(n);

}
}
else /* 输出100-99999的水仙花数*/
{
for (n = 100; n <= 99999; n++)
{
i
= n / 10000;
j
= n / 1000 - i * 10;
k
= n / 100 - i * 100 - j * 10;
l
= n / 10 - i * 1000 - j * 100 - k * 10;
m
= n % 10;
if (i != 0 && n == Recursion(i, 5) + Recursion(j, 5) + Recursion(k, 5) + Recursion(l, 5) + Recursion(m, 5))
Console.WriteLine(n);
else if (j != 0 && n == Recursion(j, 4) + Recursion(k, 4) + Recursion(l, 4) + Recursion(m, 4))
Console.WriteLine(n);
else if (n== Recursion(k, 3) + Recursion(l, 3) + Recursion(m, 3))
Console.WriteLine(n);
}
}
return 0;
}
/*********************用递归求数n的k次方*******************************/
static int Recursion(int n,int k)
{
int m;
if (k == 1) return n;
else
{
m
=n*Recursion(n,k-1);
}
return m;
}
}
}
原文地址:https://www.cnblogs.com/beeone/p/1989455.html