两个简单数学问题的精巧算法

两个简单数学问题的精巧算法

      问题一:输入一个数字,将该数字逆转并输出。例如输入:123456789 输出:987654321

       //精巧算法1:数字的逆转 int reserve(int a){ int b=0,t=a; while(t){ b*=10; b+=t%10; t/=10; } return b; } //算法应用:判断是否是回文数,a=reserve(a),则说明该数字是回文数

     

       问题二:输入一个数字n,求其约数个数。例如输入:10 输出:4

       //算法:求解整n的因子个数 #define Max 5001 int cnt[Max];//cnt[i]表示整数i的约数个数 void get_cnt(){ memset(cnt,0,sizeof(cnt)); for(int i=1;i<Max;i++) for(int j=i;j<Max;j+=i) cnt[j]++; } //当让你可以通过素因子来求解总约数的个数,相对会高效些 //但但是上述方法确实实现起来太简单了

你可能感兴趣的:(算法)