数根
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; }