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();
    }

  • 相关阅读:
    session
    jQuery使用ajaxStart()和ajaxStop()方法
    animate 的另一种用法 , 案例 等
    Javascript 面向对象编程(一):封装
    用事件委托获取每一个LI的索引值 有问题
    正常事件绑定与事件委托绑定
    JS 总结
    关于选项卡, 每一个TAB 标签 背景不一样的处理方式
    页面加载时的 Loading 效果
    一个计时器, 点击按钮 让他 停一会, 5s后继续自动运行
  • 原文地址:https://www.cnblogs.com/Random/p/550029.html
Copyright © 2011-2022 走看看