用C#求水仙花数问题

供稿:hz-xin.com     日期:2025-01-14
C#编程水仙花数

闲来无事做了个。可以查找任意位数的水仙花数。

虽然使用了缓存存储自然数的幂,但运算到7位以上依旧非常慢。
public static int[] 整数转数组(int i) { string s = i.ToString(); var re = new int[s.Length]; for (int k = 0; k > 结果 = new SortedList>(); //遍历开始位数 ~ 结束位数 for (int n = n1; n (); 结果.Add(n, 列表); Console.WriteLine(n + "位数:"); //创建n位数幂的缓存1 ~ 9数字的n次方整数 int[] nx = new int[10]; for (int k = 0; k <= 9; k++) { nx[k] = (int)Math.Pow(k, n); } //遍历100 ~ 999,更多位数类推 int start = (int)Math.Pow(10, n - 1); // 百位数开始值 100 for (int i = start; i < start * 10; i++) { //分解i为数组 var arr = 整数转数组(i); //求各位数的幂的和 int sum = 0; for (int j = 0; j < arr.Length; j++) { sum += nx[arr[j]]; } //判断 if (sum == i) { 列表.Add(i); Console.WriteLine(i); } } } Console.WriteLine("{0} ~ {1} 位数的水仙花数查找完毕。", n1, n2); Console.ReadKey(); }如满意,请采纳,谢谢。

新建一个C#的控制台应用程序,工程名为 test,写代码: using System;
using System.Collections.Generic;
using System.Text;namespace test
{
class Program
{
static void Main(string[] args)
{
int ge, shi, bai;
Console.WriteLine("所有水仙花数是:");
for (int i = 100; i <= 999; i++)
{
ge = i % 10;
shi = i / 10 % 10;
bai = i / 100;
if (ge * ge * ge + shi * shi * shi + bai * bai * bai == i)
Console.Write(" {0}", i);
}
Console.Read();
}
}
}

我是做C#的

第一种方法:
using System;
class ShuiXianHua
       {
               static void Main()
               {
                        for(int i=1;i<10;i++)
                              for(int j=0;j<10;j++)
                                    for(int k=0;k<10;k++)
                                          if(i*100+j*10+k==Math.Pow(i,3)+Math.Pow(j,3)+Math.Pow(k,3))
                                                    Console.Write("{0,5}",i*100+j*10+k);
                      Console.WriteLine();
               }
      }
第二种方法:
using System;
class ShuiXianHua
       {
            static void Main()
           {
                int i,j,k;
                for(int num = 100;num<1000;num++)
                {
                     i = num/100;        //百位数字
                     j = num%100/10;  //十位数字
                     k = num%10;        //个位数字
                    if(i*i*i+j*j*j+k*k*k == num)
                          Console.Write("{0,5}",num);
               }
               Console.WriteLine();
         }
     }
第三种方法:
using System;
class ShuiXianHua
      {
               public bool IsShuiXianHua(int num)       //定义一个函数判断一个数是否为水仙花数
              {
                   bool mark = false;
                   int i,j,k;
                   i = num/100;                    //百位数字
                   j = num%100/10;             //十位数字
                  k = num%10;                    //个位数字
                  if(i*i*i+j*j*j+k*k*k == num)
                       mark = true;
                 else
                       mark = false;
                 return mark;
               }
        }
       class Test
        {
                 static void Main()
                  {
                         ShuiXianHua sxh = new ShuiXianHua();
                         for(int n = 100;n < 1000; n++)
                         {
                               if(sxh.IsShuiXianHua(n))
                                      Console.Write("{0,5}",n);
                         }
                        Console.WriteLine();
                  }
       }
第四种方法:
using System;
class ShuiXianHua
      {
               static void Main()
               {
                      int i,j,k;
                      Console.WriteLine("水仙花数有:");
                      for(int n=100;n<1000;n++)
                      {
                             i = n/100;                           //获得百位上的数字
                             j = (n -i*100)/10;               //获得十位上的数字
                             k = n - i*100 - j*10;           //获得个位上的数字
                             if(Math.Pow(i,3)+Math.Pow(j,3)+Math.Pow(k,3)==n)
                                   Console.Write("{0,5}",n);
                       }
                      Console.WriteLine();
                 }
      }
第五种方法:
using System;
class ShuiXianHua
       {
              static void Main()
              {
                   string s;
                   int i,j,k;
                   Console.WriteLine("水仙花数有:");
                   for(int n=100;n<1000;n++)
                   {
                         s = n.ToString();            //将数字n转化为字符串
                         i = s[0] - '0';                   //获得百位上的数字
                         j = s[1] - '0';                  //获得十位上的数字
                        k = s[2] - '0';                  //获得个位上的数字
                        if(i*i*i + j*j*j + k*k*k == n)
                            Console.Write("{0,5}",n);
                   }
                   Console.WriteLine();
              }
       }


用c#求三位水仙花数并求平均值
{ int a = i \/ 100; \/\/ 百位数 int b = i % 100 \/ 10; \/\/ 十位数 int c = i % 10; \/\/ 个位数 if (a * a * a + b * b * b + c * c * c == i) \/\/ 判断是否为水仙花数 { sum += i;count++;} } double average = (double)sum \/ count; \/\/ 计算平均值...

用C#求水仙花数问题
我是做C#的 第一种方法:using System;class ShuiXianHua { static void Main() { for(int i=1;i<10;i++) for(int j=0;j<10;j++) for(int k=0;k<10;k++) if(i*100+j*10+k==

如何用C#编写一个程序求水仙花数?
C#,使用.Net6编写:\/\/水仙花数的搜索范围var index = 100; \/\/因为水仙花数要求三位及以上,所以从100开始var end = 10000; \/\/循环主体 如上则范围为 [1,10000] 内寻找for (; index <= end; index++) {\/\/通过 log10 可以取得该数字的位数长度 int dg = (int)Math.Log10(index) +...

用C#语言,100到1000“水仙花”数!!
} } 追问: Response.Write(" 水仙花数 :" + i + ""); 为什么不是Console.WriteLine("水仙花数:"+i+""); 是什么意思?? 回答: Console.WriteLine()是输出到屏幕的,一般用在控 制台 程序中,而且输出的是一行。下一个输出在下一行显示。 Response.Write()是输出到网页...

C#题目 打印出所有"水仙花数",水仙花数是一个三位数,其各位数字立方和等...
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)for (int i = 100; i < 1000; i++) { int bai = 0; int shi = 0; int ge = 0; int baiyushu = 0; bai = i \/ 100; ...

C#编写程序求100-999之间的水仙花数!~~~
int bai=num\/100; double sum = Math.Pow(ge, 3) + Math.Pow(shi, 3) + Math.Pow(bai, 3); if (num == sum) { Console.WriteLine("{0}是水仙花数。",num); } } Console.ReadLine();希望对你有帮助。

判断一个三位数是否为水仙花数c语言
用于判断一个三位数是否为水仙花数:c#include<stdio.h>intmain(){intnumber,originalNumber,remainder,result=0;printf("请输入一个三位数:");scanf("%d",&number);originalNumber=number。计算各个位上数字的立方和 while(originalNumber!=0{remainder=originalNumber%10;result+=remainder*remainder*...

c#算,4位"水仙花数"是一位四位数,其各位数字的4次方等于该数本身求所有...
if(sum==i) \/\/如果满足各个位数的4次方之和等于这个数本身,输出 { Console.WriteLine(i.ToString());} } Console.ReadKey();} 可以算出3个4位水仙花数。以上代码可以稍微拓展一下,利用orig_num.Lenght 再做一个遍历,求出各个位数的值,然后求平方, 即可以算出所有双精度浮点数索引内的...

用C#语言里的循环语句计算《输出100以内的水仙花数,输出所有3位水仙花...
新建一个C#的控制台应用程序,工程名为 test,写代码: using System;using System.Collections.Generic;using System.Text;namespace test { class Program { static void Main(string[] args){ int ge, shi, bai;Console.WriteLine("所有水仙花数是:");for (int i = 100; i <= 999; i++)...

程序设计题找出所有的“水仙花数”,所谓“水仙花数”是指一个三位数...
水仙花数是指一个三位数,它的每个位上的数字的立方和等于它本身。例如:153 是一个水仙花数,因为 1^3 + 5^3 + 3^3 = 153。下面是一个简单的C语言程序,用来找出所有的水仙花数:```c include int main() { int a, b, c, i;for(i = 100; i <= 999; i++) { a = i \/ ...