Digital Root 算法 描述:
一个数字的数字根是通过计算该整数的数字的和产生的,若果该整数只有一位,则数字根为其本身,
若该和大于10,则再次计算该和的数字根,直至和小于10;再次采用字符的形式储存该整数,以便
提高效率。
算法源码如下:
- #include <iostream>
- #include <fstream>
- #include <string>
- //#include <stdio.h>
- using namespace std;
- int main(int argc,char *argv[])
- {
- //ifstream cin("aaa.txt");
- //将数字储存为字符串
- string str;
- int sum;
- while (cin>>str)
- {
- if(str=="0")break;
- sum=0;
- for(int i=0;i<str.size();i++)
- {
- //将字符转换为数字
- if(str[i]=='1')sum+=1;
- else if(str[i]=='2')sum+=2;
- else if(str[i]=='3')sum+=3;
- else if(str[i]=='4')sum+=4;
- else if(str[i]=='5')sum+=5;
- else if(str[i]=='6')sum+=6;
- else if(str[i]=='7')sum+=7;
- else if(str[i]=='8')sum+=8;
- else if(str[i]=='9')sum+=9;
- }
- while(1==1)
- {
- if(sum<10)
- {
- cout<<sum<<endl;//out put the Digital Root
- break;
- }
- else
- {
- sum=sum/10+sum%10;
- }
- }
- }
- return 0;
- }
结果:
- 在命令行输入 :123 124 137
- 123
- 6
- 124
- 7
- 137
- 2