从零开始学编程

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 68|回复: 1

[源码分享] C语言实现自守数算法

[复制链接]
  • ta_mind
    擦汗
    2016-3-2 13:17
  • classn_01: 5 classn_02

    [LV.2]偶尔看看I

    602

    主题

    612

    帖子

    681

    积分

    高级会员

    Rank: 4

    积分
    681
    发表于 2016-10-19 00:32:05 | 显示全部楼层 |阅读模式
    [C] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    #include 
    //自守数算法
    //ep : 25 ^ 2 = 625   76 ^ 2 = 5776  9376 ^ 2 = 87909376
    /*ep :
     *   376      被乘数
     *  *376        乘数
     *  ------  ---------
     *   2256     第一个部分积=被乘数*乘数的倒数第一位
     *  2632      第二个部分积=被乘数*乘数的倒数第三位
     * 1125       第三个部分积=被乘数*乘数的倒数第三位
     *--------
     * 141376
     将以上的部分积的后3位求和后截取后3位就是3位数乘积的后3位。
    */
    
    /*由number的位数确定截取数字进行乘法时的系数k*/
    #define forech_bit_num(mul,number,k)  \
                for(mul=number,k=1;(mul/=10)>0;k*=10) ;
    //在0~xxxx这些数中寻找自守数
    #define forech_number(number,num)     \
                for(number=0;number 0)
            {
                automorphic_number(mul,number , k ,ll ,kk);
                k/=10;               /*k为截取被乘数时的系数*/
                ll*=10;
            }
             if(number==mul){         /*判断若为自守数则输出*/
                  printf("%ld   ", number);
             }
        }
    
    }
    
    
    int main(void)
    {
        print_automorphic_number(1000);
        return 0 ;
    }




    上一篇:PHP算法——冒泡排序
    下一篇:c++二叉排序树代码

    classn_11

    0

    主题

    18

    帖子

    20

    积分

    新手上路

    Rank: 1

    积分
    20
    发表于 2016-10-19 21:59:39 | 显示全部楼层
    第一个部分积=被乘数*乘数的倒数第一位
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Archiver|小黑屋|sitemap|从零开始学编程 ( 豫ICP备15032706号-2 )

    GMT+8, 2017-1-23 22:56 , Processed in 1.125036 second(s), 35 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表