数根

1.数根定义
数根(又称 数字根Digital root)是 自然数的一种 性质,换句话说, 每个 自然数都有一个 数根。数根是将一 正整数的各个 位数相加(即横向相加),若加完后的值大于 10的话,则继续将各位数进行横向相加直到其值小于 十为止,或是,将一数字重复做数字和,直到其值小于 十为止,则所得的值为该数的 数根。
2.原理
n位十进制数x可写成x=a(i)*10^i求和,因为10^i%9==1,所以x%9==a(i)求和%9
因为取模【0,8】数根【1,9】,

所以b=(a-1)%9+1;

3.代码

#include<stdio.h>
#include<string.h>
int main()
{
    int i,sum;
    char str[1001];
    while(scanf("%s",str))
    {
        if(str[0]=='0')
        break;
    for(i=0,sum=0;str[i]!='\0';i++)
    sum+=str[i]-'0';
    printf("%d\n",(sum-1)%9+1);
    
}
return 0;
} 

 

posted @ 2018-12-22 15:59  jsdhwdmaY  阅读(535)  评论(0)    收藏  举报