趣味算法-自守数
2012-01-24 18:47
274 查看
趣味算法-自守数:
一个正整数的平方的末尾几位数等于这个数本身,那么这个数为自守数。
1) 计算当前数x的位数n;
2) 计算当前数的平方数 xpower;
3) 计算平方数与原数的差,并对于10的n次方取模;
4) 若模为0则该数为自守数。
算法复杂度分析:
计算范围: nRange
当前数的位数: n
O(n, nRange) = n * nRange
一个正整数的平方的末尾几位数等于这个数本身,那么这个数为自守数。
1) 计算当前数x的位数n;
2) 计算当前数的平方数 xpower;
3) 计算平方数与原数的差,并对于10的n次方取模;
4) 若模为0则该数为自守数。
#include <stdio.h> #include <math.h> //0: not a ZiShou Number //1: is a ZiShou Number int IsZishouNum(int nNum) { int i = 0; int n = 1; int nTmp = 0; int nPower10 = 1; nTmp = nNum; while(nTmp/10 > 0) { n++; nTmp = nTmp / 10; } nTmp = pow(nNum, 2); nTmp = nTmp - nNum; nPower10 = pow(10, n); if ((nTmp % nPower10) == 0) { i = 1; } else { i = 0; } return i; } int main() { int i = 0; for (i = 0; i < 1000000; i++) { if (1 == IsZishouNum(i)) { printf("Number %d is a zi shou number\n", i); } } printf("test end\n"); scanf("%d", &i); return 0; }
算法复杂度分析:
计算范围: nRange
当前数的位数: n
O(n, nRange) = n * nRange
相关文章推荐
- 趣味算法:国王和100个囚犯(据说是腾讯的面试题)
- 趣味算法之趣味素数
- 趣味算法-水仙花数
- 趣味算法:猴子搬香蕉问题
- java-趣味算法
- 趣味算法:生男生女的比例
- 【趣味算法题】找到缺失的最小正整数
- 趣味算法之兔子产子问题
- 算法的趣味题
- 算法与数据结构 之数组(三) 趣味算法
- 3.2趣味整数之自守数
- 趣味算法之怎样订饭最省钱
- 【算法】算法中的趣味数学(三)
- 趣味算法之趣味分数
- 趣味算法-巧填运算符
- 趣味算法-0的迷宫
- [算法设计与分析]3.2.5构造趣味矩阵(规律阵+螺旋阵+魔方阵)
- 趣味算法之求余 a^b%m;
- java趣味算法(一)——约瑟夫问题
- 蓝桥杯 算法训练 Hankson的趣味题(数论)