8除不尽的自然数
8除不尽的自然数
1 问题
一个自然数被8除余1,所得的商被8除也余1,再将第二次的商被8除后余7,最后得到一个商为a,又知道这个自然数被17除余4,所得的商被17除余15,最后得到的一个商是a的两倍。求这个自然数。
2 分析
这个题目有两种解法:顺序解法和逆序解法。顺序解法假定这个数从512开始(8*8*8),然后按照题目要求顺藤摸瓜,最后求得两个商a和b,如果2*a=b,那么找到了这个数。逆序解法是假设商从0开始然后逆序得到最初的被除数。在这里给出顺序解法的c解决方案
3 解决方案
顺序解决方案
1: /** 2: * @file 019naturlnumber8.c 3: * @author Chaolong Zhang <emacsun@163.com> 4: * @date Sun May 19 14:54:55 2013 5: * 6: * @brief 一个自然数被8除余1,所得的商被8除也余1,再将第二次的商被8除后余7,最后得到一个商为a,又知道这个自然数被17除余5,所得的商被17除余15,最后得到的一个商是a的两倍。求这个自然数。 7: * 8: * 9: */ 10: #include <stdio.h> 11: 12: int main(int argc, char *argv[]) 13: { 14: int n=512; 15: int a,b; 16: for (n=512; n < 9999999; ++n) 17: { 18: if ( n%8==1 ) 19: { 20: if ( (n/8) % 8 == 1 ) 21: { 22: if( ((n/8)/8)%8 ==7 ) 23: { 24: a= ((n/8)/8)/8; 25: } 26: } 27: else continue; 28: } 29: else continue; 30: if (n%17 == 4) 31: { 32: if ( (n/17)%17 == 15 ) 33: { 34: b = (n/17)/17; 35: } 36: } 37: else continue; 38: if (2*a==b) 39: { 40: printf ("the number is%d \n",n); 41: } 42: else continue; 43: } 44: return 0; 45: }
作者:emacsun
出处:http://www.cnblogs.com/chaolong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。