zoukankan      html  css  js  c++  java
  • 判断任意位数的一个数是否为Armstrong数的算法

    所谓Armstrong数,就是n位数的各位数的n次方之和等于该数,如:
                               153=1^3+5^3+3^3
                               1634=1^4+6^4+3^4+4^4
    所以,要判断一个数是否为Armstrong数,就应该取出其各位数进行乘方后再相加,如果结果等于该数,则将其输出。于是该首先得到该数的位数,我是用以下算法实现的:
                                TempNumber=Number; 
                                while(TempNumber!=0) 
                                {
                                    TempNumber=TempNumber/10;
                                    n++;
                                 }
    得出的n,就是该数的位数。
    然后,再通过Armstrong数的判定规则来判断该数,
    我用了Sum+=(int)(pow(TempNumber/(int)(pow(10,m)),n))来实现各位数的累加,这样就能得到各位数的和了。

    C语言程序完整代码如下:



    #include<math.h>
    main()
    {
      int Number,TempNumber,Sum,m,n;
      Sum=0;
      n=0;

      /*输入一个整数*/
      printf("\nPlease input a number:");  
      scanf("%d",&Number);  

      /*获取当前输入数的位数*/
      TempNumber=Number;
      while(TempNumber!=0) 
      {
        TempNumber=TempNumber/10;
        n++;
      }

      /*判断该数是否为Amstrong数*/
      m=n-1;
      TempNumber=Number;
      while(TempNumber!=0)
      {
        Sum+=(int)(pow(TempNumber/(int)(pow(10,m)),n));
        TempNumber=TempNumber%(int)(pow(10,m));
        m--;
      }
      if(Sum==Number) printf("This number is a armstrong number!");
      else printf("Sorry,this number is not a armstrong number!");
      getch();
    }

  • 相关阅读:
    访问者模式:男人女人区别
    享元模式:开发多个网站实例
    中介者模式:联合国实例
    职责链模式:加薪实例
    命令模式:烤羊肉串实例
    桥接模式:手机软件实例
    单例模式
    组合模式:公司管理系统实例
    备忘录模式:游戏进度实例
    适配器模式:篮球翻译实例
  • 原文地址:https://www.cnblogs.com/Random/p/550029.html
Copyright © 2011-2022 走看看