8除不尽的自然数

8除不尽的自然数

8除不尽的自然数

Table of Contents

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:  }

Date: 2013-05-19 15:31

Author: emacsun

Org version 7.8.02 with Emacs version 23

Validate XHTML 1.0
posted @ 2013-05-19 15:31  emacsun  阅读(888)  评论(0编辑  收藏  举报