081.自守数

简介: 081.自守数
#include<stdio.h>
void main()
{
    long mul,number,k,ll,kk,n;
    clrscr();
    puts("============================================================");
    puts("||    This program will find the automorphic numbers.     ||");
    puts("|| The defination of a automorphic number is: the mantissa||");
    puts("||     of a natural number's square equals to itself.     ||");
    puts("||       e.g., 25^2=625, 76^2=5776, 9376^2=87909376.      ||");
    puts("============================================================");
    printf("\n >> Please input the scale n you want to find : ");
    scanf("%ld",&n);
    printf("\n >> The automorphic numbers small than %ld are:\n\n",n);
    for(number=0;number<n;number++)
    {
        for(mul=number,k=1;(mul/=10)>0;k*=10);
                   /*由number的位数确定截取数字进行乘法时的系数k*/
        kk=k*10;      /*kk为截取部分积时的系数*/
        mul=0;        /*积的最后n位*/
        ll=10;        /*ll为截取乘数相应位时的系数*/
        while(k>0)
        {
            mul=(mul+(number%(k*10))*(number%ll-number%(ll/10)))%kk;
                 /*(部分积+截取被乘数的后N位*截取乘数的第M位),%kk再截取部分积*/
            k/=10;               /*k为截取被乘数时的系数*/
            ll*=10;
        }
        if(number==mul)         /*判断若为自守数则输出*/
            printf("%ld   ",number);
    }
    puts("\n\n >> Press any key to quit...");
    getch();
}
相关文章
|
6月前
|
算法
给定两个数,求这两个数的最大公约数
给定两个数,求这两个数的最大公约数
|
13天前
求这两个数的最小公倍数
【10月更文挑战第21天】求这两个数的最小公倍数。
11 4
|
14天前
求两个数的最小公倍数
【10月更文挑战第20天】求这两个数的最小公倍数。
13 4
|
2月前
水仙花数
水仙花数。
84 7
|
5月前
|
Windows
1091 N-自守数 (15 分)
1091 N-自守数 (15 分)
|
6月前
|
C++
水仙花数.
这是一个关于求解水仙花数的C++代码片段。水仙花数是指3位数,其各位数字立方和等于该数本身,如153。代码通过循环遍历100到999,拆分每位数字并计算立方和,如果满足条件则输出该数。解题关键在于对三位数的个位、十位、百位进行拆分和立方运算。
67 0
|
12月前
628. 三个数的最大乘积
628. 三个数的最大乘积
|
算法 C语言
自守数算法
自守数算法
73 0
遇7避过(输出1~100内的安全数,安全数不能带有7,不能被7整除
遇7避过(输出1~100内的安全数,安全数不能带有7,不能被7整除
65 0
|
Python
找几个数的最大乘积
找几个数的最大乘积
71 0